- -
База данных
(
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 |
Люди,очень срочно надо.Ответьте кто нибудь пожалуйста
|
Для того что бы получить список таблиц обычно выполняют запрос к системным таблицам и смотрят результат этого запроса.
Если вы используете 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
|
СУБД?
Выкинули бы вы BDE, зачем он нужен? С ним одни проблемы
|
pirojok750 |
29-10-2009 23:03 1256068 |
BlackEric,BDE является условием проекта.Необходимо выполнить через BDE.
|
ок.
Table.TableName хранит в себе имя одно конкретной таблицы. И как получить список таблиц зависит от используемой СУБД. А BDE - это лишь технология доступа.
Какую СУБД вы используете?
|
pirojok750 |
30-10-2009 00:28 1256143 |
а можно поточнее.я ипользовал sql explorer и database desktop из пакета,который шел вместе с делфи 7
|
Это очень древняя штука. 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. получается моя держит.
|
У вас list не заполняется? Или в чем проблема? Используйте отладчик для поиска
|
pirojok750 |
30-10-2009 17:27 1256801 |
BlackEric, в комбобоксе ничего не отражается.
|
pirojok750 |
30-10-2009 18:08 1256850 |
попытался записать list в memo таких методом
Код:
memo1.lines.addstrings(list)
компилятор выдал ошибку что переменная list используется без инициализации
|
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
|
Это не ошибка, а предупреждение! вас 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 они не записываются.Если необходимо могу скинуть все исходники программы,чтобы вам удобнее было разобраться
|
Формализуем.
Ваша бд лежит в каталоге на диске. И в ней каждая таблица представлена одним файлом с расширением db или dbf?
И вам нужно получить список таблиц.
Для этого я бы рекомендовал пройтись по каталогу и получить в нем список файлов средствами работы с файлами. Через BDE вы это врядли сделаете. Там структура бд как я помню менялась простым подкидыванием и удалением файлов.
|
pirojok750 |
31-10-2009 00:23 1257089 |
BlackEric, файлы формата .db. Подскажите как можно реализовать отобоажение списка таблиц в комбобоксе
|
Код:
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.
© OSzone.net 2001-