Войти

Показать полную графическую версию : База данных


Страниц : [1] 2

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

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

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

pirojok750
29-10-2009, 02:12
Вопросик такой: например есть пару таблиц (stud.DB,grup.DB,oplat.DB). необходимо отобразить весь список этих таблиц,а их может быть большое количество в combox1.При нажатии на клавищу "Отобразить таблицы" я использую такой метод ComboBox1.Items.Add(Table1.TableName);,но список не отображается.Подскажите пожалуйста как лучше сделать отображение этих таблиц (я иммею ввиду на кнопку или на пример на активацию формы и т.д) и чтобы они отображались в моей Combobox1

pirojok750
29-10-2009, 20:39
Люди,очень срочно надо.Ответьте кто нибудь пожалуйста

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

pirojok750
29-10-2009, 22:56
BlackEric, я использую BDE. мне надо именно получить список таблиц из Table1.TableName и поместить его в Combobox1

BlackEric
29-10-2009, 23:00
СУБД?
Выкинули бы вы BDE, зачем он нужен? С ним одни проблемы

pirojok750
29-10-2009, 23:03
BlackEric,BDE является условием проекта.Необходимо выполнить через BDE.

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

pirojok750
30-10-2009, 00:28
а можно поточнее.я ипользовал sql explorer и database desktop из пакета,который шел вместе с делфи 7

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

pirojok750
30-10-2009, 00:53
BlackEric, спасибо за помошь.Товарищи с http://www.delphisources.ru/ подкинули вот такую идею
var list:Tstrings;
begin Database1.GetTableNames(list,False);
ComboBox1.Items.AddStrings(list);

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

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

BlackEric
30-10-2009, 01:54
У вас list не заполняется? Или в чем проблема? Используйте отладчик для поиска

pirojok750
30-10-2009, 17:27
BlackEric, в комбобоксе ничего не отражается.

pirojok750
30-10-2009, 18:08
попытался записать list в memo таких методом memo1.lines.addstrings(list)
компилятор выдал ошибку что переменная list используется без инициализации

BlackEric
30-10-2009, 22:07
pirojok750, приведите полностью исходный код процедуры и текст ошибки

pirojok750
30-10-2009, 23:08
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
Это не ошибка, а предупреждение! вас GetTableNames ничего не возвращает судя по всему

pirojok750
30-10-2009, 23:54
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
Формализуем.
Ваша бд лежит в каталоге на диске. И в ней каждая таблица представлена одним файлом с расширением db или dbf?
И вам нужно получить список таблиц.
Для этого я бы рекомендовал пройтись по каталогу и получить в нем список файлов средствами работы с файлами. Через BDE вы это врядли сделаете. Там структура бд как я помню менялась простым подкидыванием и удалением файлов.




© OSzone.net 2001-2012