![]() |
|
|
#1
|
|||
|
|||
|
Всем привет. Я новичок в делфи. У меня установлена делфи7. Есть база данных SQLite. Как мне подключить его к гриду в делфи7?
|
|
#3
|
|||
|
|||
|
Цитата:
1. DISQLite3Database1 2. DISQLite3UniDirQuery1 3. DISQLite3DataSetImporter1 В опциях DISQLite3Database1 выбрал базу данных и конектился, все ок. В опциях DISQLite3UniDirQuery1 выбрал DISQLite3Database1 и где написано SelectSQL написал Select * from hamagi - все ок. В опциях DISQLite3DataSetImporter1 выбрал DISQLite3Database1 и DISQLite3UniDirQuery1 и там где написано Table name написал hamagi - все ок. На форме вставил DBGrid но как его подключить к базе данных? В опциях DBGrid есть DataSource но при клике она пустая, что делать дальше? |
|
#4
|
||||
|
||||
|
Со вкладки Data Access палитры компонентов осталось добавить невизуальный компонент DataSource и ему задать из списка в Data Set вашу базу и прицепить его к DBGrid
|
|
#5
|
|||
|
|||
|
Цитата:
1. DataSource (DB) 2. ClientDataSet (DBClient) 3. DataSetProvider (Provider) 4. XMLTransform (Xmlxform) 5. XMLTransformProvider (Xmlxform) 6. XMLTransformClient (Xmlxform) 7. VirtualTable (VirtualTable) 8. CRBatchMove (CRBatchMove) Какой из них выбрать? |
|
#6
|
|||
|
|||
|
Ах да я понял, я сделал как вы сказали но выдает ошибку Operation not allowed on a unidirectional dataset
|
|
#7
|
||||
|
||||
|
Возможно ещё нужны DataSetProvider и ClientDataSet оттуда же т.к.
вероятно ваша DISQLite3Database имеет однонаправленный набор данных, а гриду надо с произвольным доступом |
|
#8
|
|||
|
|||
|
Цитата:
|
|
#9
|
|||
|
|||
|
Цитата:
|
|
#10
|
||||
|
||||
|
На сайте где вы скачивали библиотеку DISQLite есть делфийские примеры, можно их и глянуть, хуже не будет :-)
|
|
#11
|
|||
|
|||
|
Цитата:
procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; if not Query1.Prepared then Query1.Prepare; Query1.ParamByName('lastname').Value := Edit1.Text; Query1.Open; end; |
|
#12
|
||||
|
||||
|
А не проще готовыми методами самого компонента?
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Locate('lastname', Edit1.Text, [loPartialKey]);
end; |
|
#13
|
|||
|
|||
|
Цитата:
Кстати на форме имеется DBGrid1, Edit1, Button1, DataSource, Clientdataset1, Datasetprovider, DISqliteDatabase и DISqliteUniDirQuery. На гриде показывается все данные из базы данных sqlite.db. Надо в поле edit1 написать например фамилию Пиров и при нажатии на кнопку в гриде была только фамилия Пиров если она есть, в противном случае выскочило сообшение Нет такого сотрудника. |
|
#14
|
||||
|
||||
|
Цитата:
А про фамилию, можно похоже вот так сделать Код:
...
with Query1 do
begin
Close;
SQL.Text:= 'SELECT * FROM Table_Name WHERE lastname=' + Edit1.Text;
Open;
if FieldValues['lastname'] <> Edit1.Text then
ShowMessage('Нет такого сотрудника') ;
end;
... |
|
#15
|
|||
|
|||
|
Цитата:
|