Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   База данных (http://forum.oszone.net/showthread.php?t=154724)

pirojok750 27-10-2009 23:39 1254281

База данных
 
Здраствуйте. Необходимо создать программу для работы с Базами Данных на Делфи.Условие такое что пользователь не должен знать sql запросов а просто выбирал необходимую для него (кнопку или элемент выпадающего списка) и вводил туда дополнительные параметры.Например выбрал Кнопку Создать базу данных и должно появлятся окно в котором ему нужно будет ввести количество полей,их тип размерность и имя самой таблицы.и такие же кнопки нужны для запросов:insert into,drop table,create table,select,delete from,update. Сразу говорю,что я не прошу за меня все решить.я прошу поделится идеями как это можно реализовать,так как сам в этом не силен.Если есть уже готовые исходники или какие нибудь полезные статьи,то скидывайте их пожалуйста.Нет необходимости в огромных учебниках по 500 страниц.Буду благодарен за любую помошь.Спасибо

El Scorpio 28-10-2009 02:24 1254373

Цитата:

Цитата pirojok750
я прошу поделится идеями как это можно реализовать »

Полезная идея - использовать СУБД, позволяющую хранить SQL-запросы в самой БД.
Тогда в программе эти запросы можно будет вызывать по имени: запросы без параметров компонентом TDBTable, а запросы с параметрами - компонентом TDBStoredProc.

Заодно при отладке запросов не будет необходимости перекомпилировать программу.

pirojok750 29-10-2009 02:12 1255274

Вопросик такой: например есть пару таблиц (stud.DB,grup.DB,oplat.DB). необходимо отобразить весь список этих таблиц,а их может быть большое количество в combox1.При нажатии на клавищу "Отобразить таблицы" я использую такой метод
Код:

ComboBox1.Items.Add(Table1.TableName);
,но список не отображается.Подскажите пожалуйста как лучше сделать отображение этих таблиц (я иммею ввиду на кнопку или на пример на активацию формы и т.д) и чтобы они отображались в моей Combobox1

pirojok750 29-10-2009 20:39 1255938

Люди,очень срочно надо.Ответьте кто нибудь пожалуйста

BlackEric 29-10-2009 22:36 1256050

Для того что бы получить список таблиц обычно выполняют запрос к системным таблицам и смотрят результат этого запроса.
Если вы используете ADO, то выкиньте Table. Используйте DataSet.
В нем после выполнения запроса (for ms sql it's will be select name from sysobjects) вы получите список таблиц. И тогда уже проходя в цикле через recordset заполняете ваш combobox.
Примеры кода смотрите в google. Это азы работы с бд

pirojok750 29-10-2009 22:56 1256062

BlackEric, я использую BDE. мне надо именно получить список таблиц из Table1.TableName и поместить его в Combobox1

BlackEric 29-10-2009 23:00 1256066

СУБД?
Выкинули бы вы BDE, зачем он нужен? С ним одни проблемы

pirojok750 29-10-2009 23:03 1256068

BlackEric,BDE является условием проекта.Необходимо выполнить через BDE.

BlackEric 29-10-2009 23:13 1256077

ок.
Table.TableName хранит в себе имя одно конкретной таблицы. И как получить список таблиц зависит от используемой СУБД. А BDE - это лишь технология доступа.
Какую СУБД вы используете?

pirojok750 30-10-2009 00:28 1256143

а можно поточнее.я ипользовал sql explorer и database desktop из пакета,который шел вместе с делфи 7

BlackEric 30-10-2009 00:45 1256155

Это очень древняя штука. Sql она не держит. Насколько помнится она генерила бд какого-то Paradox, но могу и ошибаться. В моей 2006 этого уже нет и посмотреть неначем. Sorry. С такой древностью не помогу

pirojok750 30-10-2009 00:53 1256158

BlackEric, спасибо за помошь.Товарищи с http://www.delphisources.ru/ подкинули вот такую идею
Код:

var  list:Tstrings; 
begin  Database1.GetTableNames(list,False); 
ComboBox1.Items.AddStrings(list);

У меня это не работает,но я уверен не работает из-за меня,потому что я очень слабо в них разбираюсь.Что вы можете сказать по этому коду??

Цитата:

Цитата BlackEric
Это очень древняя штука. Sql она не держит. »

создание таблиц я уже прописал.язык для создания-SQL. получается моя держит.

BlackEric 30-10-2009 01:54 1256187

У вас list не заполняется? Или в чем проблема? Используйте отладчик для поиска

pirojok750 30-10-2009 17:27 1256801

BlackEric, в комбобоксе ничего не отражается.

pirojok750 30-10-2009 18:08 1256850

попытался записать list в memo таких методом
Код:

memo1.lines.addstrings(list)
компилятор выдал ошибку что переменная list используется без инициализации

BlackEric 30-10-2009 22:07 1257005

pirojok750, приведите полностью исходный код процедуры и текст ошибки

pirojok750 30-10-2009 23:08 1257049

Код:

procedure TForm1.Button5Click(Sender: TObject); 
var  list:Tstrings;
begin
Database1.GetTableNames(list,false);
 ComboBox1.Items.AddStrings(list);  end;

[Warning] Unit1.pas(90): Variable 'list' might not have been initialized

BlackEric 30-10-2009 23:36 1257061

Это не ошибка, а предупреждение! вас GetTableNames ничего не возвращает судя по всему

pirojok750 30-10-2009 23:54 1257072

BlackEric, в sql explorer я создал базу данных,назвад ее mydb и для нее указал путь к папке куда сохранять таблицы (D:\BD\).на форму кинул невизуальный компонент DataBase1.В его свойстве AliasName выбрал созданную Бд(mydb), в свойстве database name написал DJB.Так же кинул элемент Table1 и в его свойстве указал database name указал DJB.У него есть свойство TableName в котором можно выбрать созданные мной БД(они находятся в папке D:\BD\),но почему то в list они не записываются.Если необходимо могу скинуть все исходники программы,чтобы вам удобнее было разобраться

BlackEric 31-10-2009 00:14 1257085

Формализуем.
Ваша бд лежит в каталоге на диске. И в ней каждая таблица представлена одним файлом с расширением db или dbf?
И вам нужно получить список таблиц.
Для этого я бы рекомендовал пройтись по каталогу и получить в нем список файлов средствами работы с файлами. Через BDE вы это врядли сделаете. Там структура бд как я помню менялась простым подкидыванием и удалением файлов.

pirojok750 31-10-2009 00:23 1257089

BlackEric, файлы формата .db. Подскажите как можно реализовать отобоажение списка таблиц в комбобоксе

BlackEric 31-10-2009 01:43 1257111

Код:

procedure TForm1.Button1Click(Sender: TObject);
begin
 try
  Database1.DatabaseName := 'c:\db';///УКАЖИТЕ СВОЙ ПУТЬ
  Database1.Connected := true;
  Database1.GetTableNames(ComboBox1.Items, false);
 finally
  Database1.Connected := false;
 end;

Ложим на форму кнопку, TDataBase and TComboBox. В обработчик кнопки вставляем вышеприведенный код указав свой путь и запускаем.

pirojok750 24-11-2009 03:37 1278589

Здраствуйте,это снова я!.Подскажите пожалуйста как получить список полей таблицы при выборе таблицы в выпадающем списке.На форме есть 2 combobox. В первом отображаются имеющиеся таблицы а во втором combobox должны отображатся поля данной таблицы,при выборе таблицы в 1 комбобоксе.с первой частью мы разорбались выше,а вот как получить список полей до меня не доходит.
Метод я нашел,а вот с его синтаксисом не могу разобратся.что нужно записать внутри метода
Код:

form1.Database1.GetFieldNames(????);
.Заранее благодарен

pirojok750 24-11-2009 19:14 1279093

Уважаемые,куда все пропали??

pirojok750 25-11-2009 01:26 1279344

Кризис и программистов чтоли коснулся??))


Время: 13:48.

Время: 13:48.
© OSzone.net 2001-