В первой части мы рассмотрели как правильно подключить БД MS Access в проект Delphi. Сейчас мы рассмотрим примитивную работа с данными компонентами, а также некоторые свойства их. Кроме это попробуем сделать небольшие запросы к БД и добавлять, редактировать информацию, удалять и перемещаться в таблице по записям. Мы все прекрасно помним компонент TDBGrid. Так вот в нем для удобства я нажал двойным щелчком левой кнопкой мыши и в появившемся окне я создал 2 поля, нажав на кнопку Add new. Затем выбрав первой поле в свойстве FildName я прописал вручную fio, в том же свойстве для второго поля я прописал oz. Затем я перешел в свойство Title раскрыл его и в подсвойстве Caption для 1-го поля я указал ФИО, а для 2-го поля я указал Оценка. Затем в свойстве компонента TDBGrid я раскрыл свойство Options и в подствойстве dgEditing я установил False, а в подсвойстве dgRowSelect я установил True. dgEditing - я запретил редактирование в самой таблице, а dgRowSelect этим свойством выделяется вся строка в таблице. На главную форму нашего приложения я «установил» следующие компоненты и вот что у меня получилось

Далее на кнопку «Добавить» я написал следующий код

procedure TForm1.Button1Click(Sender: TObject);
begin
try
if (Trim(Edit1.Text)='') or (Trim(Edit2.Text)='') then
begin
exit;
end;
ADOQuery1.Insert;
ADOQuery1.FieldByName('fio').AsString:=Edit1.Text;
ADOQuery1.FieldByName('oz').AsInteger:=StrToInt(Edit2.Text);
Edit1.Clear;
Edit2.Clear;
except
on e:Exception do
end;
end;

Здесь самой главное — это Insert. То есть это означает, что мы вставляем новую строку в нашу таблицу. FieldByName - указываем в какое поле мы вставляем информацию и AsType - необходимо указать тип наших данных, которые мы вставляем.

На кнопку «Удалить» я написал следующий код

procedure TForm1.Button2Click(Sender: TObject);
begin
try
if Application.MessageBox('Delete?','ADO',MB_YESNO)=IDYES then
begin
ADOQuery1.Delete;
end;
except
on e:Exception do
end;
end;

Здесь метод Delete, то есть с помощью него мы удаляем запись из таблицы на которой стоит указатель, мы конечно можем удалить с помощью запроса, но тогда нам придется получать уникальный номер записи, но это мы посмотрим в следующем уроке по базам данных.

На кнопку «Редактировать» я написал следующий код

procedure TForm1.Button3Click(Sender: TObject);
begin
try
ADOQuery1.Edit;
ADOQuery1.FieldByName('fio').AsString:=Edit1.Text;
ADOQuery1.FieldByName('oz').AsInteger:=StrToInt(Edit2.Text);
except
on e:Exception do
end;
end;

Здесь самое главное это метод Edit, который ставит текущую строку в режим редактирование, а дальше точно также как и с добавлением, редактирование и добавление также можно написать с помощью запросов, что мы и рассмотрим в следующей статье.

Перед тем как редактировать я на событие DBGrid - OnCellClick написал получение данные в наши поля, чтобы мы могли их отредактировать потом, то есть чтобы пользователь видел какие данные там раньше находились, до редактирования

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
try
Edit1.Text:=ADOQuery1.FieldByName('fio').AsString;
Edit2.Text:=IntToStr(ADOQuery1.FieldByName('oz').AsInteger);
except
on e:Exception do
end;
end;

Здесь почти точно также как и в добавлении, только мы делаем все наооборот, присваиваем значения из таблицы в наши поля.

На кнопку «Вниз» я написал следующий код

ADOQuery1.Last;

Метод Last означает, что мы переместимся на последнюю запись нашей таблицы

На кнопку «Обновить» я написал следующий код

ADOQuery1.Refresh;

Метод Refresh означает, что мы обновляем данные в таблице и соответственно они обновляются и перед нами

На кнопку «Вверх» я написал следующий код

ADOQuery1.First;

Метод First означает, что мы перейдем на первую запись в нашей таблице

На кнопку «Далее» я написал следующий код

ADOQuery1.Next;

Метод Next означает, что мы будем проходить последовательно по записям вниз

На кнопку «Назад» я написал следующий код

ADOQuery1.Prior;

Метод Prior означает, что мы будем проходиться последовательно по записям нашей таблицы вверх

Далее после редактирования, добавления данных нам необходимо их сохранить, вот поэтому и существует у нас кнопку «Сохранить»  на событие OnClick, которой я написал следующий код

procedure TForm1.Button9Click(Sender: TObject);
begin
try
ADOQuery1.Active:=True;
ADOQuery1.Post;
except
on e:Exception do
end;
end;

Здесь все просто метод Post сохраняет все измененные данные в нашей таблице.

Далее идут у нас кнопку с небольшими запросами, на кнопке «Вывести всех с оценками 10» по событию OnClick я написал следующий код

procedure TForm1.Button10Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Student WHERE oz=10');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Здесь у нас идет обычный запрос с условием, условие у нас задается с помощью конструкции Where. Здесь мы и указываем какие записи выводить. Метод Clear - очищает все что было в SQL, а ADD - добавляет текст SQL.

Далее на кнопке «Вывести все фамилии, в которых присуствует Иван» я написал следующий код

procedure TForm1.Button11Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Student WHERE fio LIKE ''%Иван%''');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Здесь у нас уже новенькое в SQL-синтаксисе LIKE и конструкции %%, да именно эта конструкция и ищет совпадения Иван в поле fio во всех записях. И наконец выводим все записи нашей таблиц для этого достаточно написать следующий код

procedure TForm1.Button12Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Student');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Также во вкладке ADO есть хороший компонент TADOTable, который работает по такому же принципу как и TADOQuery, но в TADOTable нельзя формировать SQL-запросы, поэтому я предпочитаю TADOQuery. В следующей статьи про БД я напишу как добавлять, редактировать и удалять данные с помощью SQL-запросов. Исходник данной статьи Вы сможете скачать на странице Исходники

Кстати, хочу заметить, что давно не секрет, что самый лучший друг человеку является собака. Перед покупкой себе питомца необходимо много чего узнать. Такой информации достаточно на портале ВЕРНЫЙ ПЕС, где Вы сможете узнать всю информацию о питомцах, а также поделиться своим опытом и рассказать про свою проблему.
Автор статьи - Andrey53

Метки: , , , , , ,




К записи “Работа с ADO в Delphi. Часть 2” оставлено комментариев: 69.

  1. Алексей:

    Извините, а где «следующий урок»?

  2. Andrey53:

    2Алексей, вот тут посмотрите http://devdelphi.ru/?page_id=263

  3. Last_kamikadze:

    Спасибо за ценный материал материал. Не могли бы мне помочь, у меня ошибка вот такая вылетает http://s017.radikal.ru/i430/11.....b33d91.jpg понимаю что это связанно с типами, но не пойму точно. делаю все как написано а кнопка «добавить» не работает у меня немного полей больше…

  4. Анна:

    спасибо за статью,все очень доступно описано=))
    у меня вот какой вопрос:
    вот здесь у вас все понятно
    Edit1.Text:=ADOQuery1.FieldByName(‘fio’).AsString;//буквенные символы
    Edit2.Text:=IntToStr(ADOQuery1.FieldByName(‘oz’).AsInteger);//числовые
    а мне нужно написать так чтобы выводились и буквы и цифры в одной колонке.
    Как мне это реализовать?если можно то с примером=))

    • Andrey:

      установите текстовое поле, в него можно записывать и буквы и числа, он все будет воспринимать как строку

  5. Shark:

    Здравствуйте.Не получается с кнопкой добавить. Ввожу данные,нажимаю на кнопку ничего не меняется. Сделал кнопку обновить в надежде что она поможет,но тщетно. помогите,пожалуйста.

    • Andrey:

      Что конкретно у Вас не получается? можно добавить с помощью запросов, но для новичков лучше использовать процедуру Insert, а затем каждому полю присваивать значения, в конце не забудьте сохранить запись с помощью Post

  6. Евгений:

    Здравствуйте. Подскажите в написание события фильтрации. Пишу обработчик события фильтрации поиска фамилии, указанной в Edit1 ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT * FROM Sotrudniki WHERE familiya LIKE ''%Edit1.Text%''');
    ADOQuery1.Active:=True;
    Итог не фильтруются, записи в таблице перестают отображаться.Что не так ?

    • Andrey:

      Знак процентов не там ставите в конструкции LIKE, ‘%’+Edit1.Text+’%’, а у Вас получается, что все идет как текст

  7. yaskin:

    подскажите, как подключить данные из двух таблиц в один грид?
    Например в первой таблице записи товар и цена, а количество товара во второй таблице.
    Заранее спасибо

    • Andrey:

      Путем объединенного запроса, объединяй две таблицы в один запрос и привязывайте его к ГРИДУ

  8. Natasha:

    Подскажите пожалуйста, при попытке записать fio в свойстве FildName, вылетает ошибка, как следствие, невозможно работать с програмой. В чем может быть проблема? Ошибка такая: «ADOQuery1: Missing SQL Property»

  9. Studentka:

    Здраствуйте, у меня при изменении данных в одной таблице, не изменяются сразу в другой таблице, изменяются только после выхода из программы. Как сделать так, что при изменении в одной таблице, сразу менялись в другой???

  10. Studentka:

    при добавление, редактировании и удалении.

  11. luna:

    здравствуйте.возник вот такой вопрос.на главной форме находится dbgrid.при нажатии (OnCellClick)на строку,переходим на вторую форму на которой расположен pagecontrol и на первой его закладке находятся editы ,в которые записывается информация с dbgrid с form1. в бд всего 5 таблиц.в dbgrid выводится главная, можно ли как то сделать так,чтобы при нажатии на строку главной таблицы в editы попадала информация не только с dbgrid, но и с остальных таблиц тоже.а именно хотелось бы совета, как осуществить и вообще возможно ли это?

    • Andrey:

      можно, с помощью SQL-запроса, для этого таблицы должны быть связаны, можно даже с помощью поля ID

  12. luna:

    спасибо за совет)))хотелочь бы еще у вас узнать по поводу ДОБАВЛЕНИЯ данных.
    вот часть кода
    Form2.ADOQuery1.Insert;
    Form2.ADOQuery1.Edit;
    Form2.ADOQuery1.FieldByName(‘name’).Value := Edit21.Text;
    Form2.ADOQuery1.FieldByName(‘№prikaza’).AsInteger:= StrToInt(Edit22.Text);
    Form2.ADOQuery1.FieldByName(‘data’).Value := Edit23.Text;
    Form2.ADOQuery1.FieldByName(‘nazvanie’).Value := Edit24.Text;
    Form2.ADOQuery1.FieldByName(‘vipiska’).Value := Memo1.Text;
    Form2.ADOQuery1.Post;
    Form2.ADOQuery1.Refresh;

    Проблема в том, что программа не подразумевает заполенение всех полей,НО если какие то поля не заполнены, то ошибка

    raised exception class econverterror with message »is not a valid integer value

    как быть в этом случае??

    • Andrey:

      потому что у Вас идет вначале — Insert и Edit, надо что-то одно выбрать, либо редактирование, либо добавление

      • luna:

        мне нужно добавление, т.е.Insert.но проблему это не решает.если какие то поля не заполняются,все равно появляется ошибка типjd,ключевыми в бд эти поля не являются(в чем еще может быть проблема???

  13. luna:

    возможно.а где это можно проверить??

  14. luna:

    помогите,пожалуйста,разобраться. из бд при помощи adoquery запросом вывожу все таблицы и их поля сразу в dbgrid, в dbgrid видны только 4 столбца. делается это для того, чтобы по событию ondblclick, т.е. когда я нажимаю определенную запись, все данные считывались в edit, для того чтобы инфо можно было просмотреть и в случае необходимости редактировать.так вот с редактирование проблемы. редактирование может производится внутри 5 связанных таблиц, которые связаны по табельному номеру сотрудника поле — id. код следующий

    //таблица сотрудник
    begin
    Form2.ADOQuery1.Edit;
    begin
    if StrToIntDef(Edit2.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘id’).AsInteger := StrToInt(Edit2.Text);
    if length(Trim(Edit1.Text))>0 then
    Form2.ADOQuery1.FieldByName(‘name’).AsString:= Edit1.Text;
    Form2.ADOQuery1.FieldByName(‘naz_podrazdelenia’).AsString := DBLookupComboBox1.Text;
    Form2.ADOQuery1.FieldByName(‘naz_dolgnost’).AsString := DBLookupComboBox2.Text;
    Form2.ADOQuery1.Post;
    end;

    //таблица анкетные данные
    begin
    Form2.ADOQuery1.Edit;
    begin
    if StrToIntDef(Edit2.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘id_1′).AsInteger := StrToInt(Edit2.Text);
    if StrToIntDef(Edit6.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘data_rogdenia’).AsInteger:= StrToInt(Edit6.Text);
    if StrToIntDef(Edit8.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘telefon’).AsInteger := StrToInt(Edit8.Text);
    if length(Trim(Edit9.Text))>0 then
    Form2.ADOQuery1.FieldByName(‘adres’).AsString := Edit9.Text;
    if length(Trim(Edit7.Text))>0 then
    Form2.ADOQuery1.FieldByName(‘naimenovanie_dokm’).AsString := Edit7.Text;
    if StrToIntDef(Edit10.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘seria’).AsInteger:= StrToInt(Edit10.Text);
    if StrToIntDef(Edit11.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘nomer’).AsInteger := StrToInt(Edit11.Text);
    if StrToIntDef(Edit26.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘god _slujbi’).AsInteger := StrToInt(Edit26.Text);
    if StrToIntDef(Edit27.Text,0)>0 then
    Form2.ADOQuery1.FieldByName(‘№voenn_bileta’).AsInteger := StrToInt(Edit27.Text);
    end;
    Form2.ADOQuery1.Post;
    end;

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

  15. Marsell:

    а если надо ввести тип поля не integer а real
    AsInteger:=StrToInt

  16. Studentka:

    Помогите, пожалуйста, у меня проблемы с компонентом DBLookupCombobox. Ситуация такая, на форма добавления есть три три DBLookupCombobox,где во втором должно высвечиваться в зависимости от выбора в первом, а в третьем, в зависисмости от второго(как настроить эти компоненты).Вот мой код добавления, посмотрите пожалуйста, он тоже не работает
    begin
    Form2.ADOTable1.Insert;
    Form2.ADOTable1.FieldByName(‘shifrknigi’).AsString:=Edit1.Text;
    Form2.ADOTable1.FieldByName(‘nazvanie’).AsString:=Edit2.Text;
    Form2.ADOTable1.FieldByName(‘izdatelstvo’).AsString:=Edit4.Text;
    Form2.ADOTable1.FieldByName(‘godizdaniy’).AsString:=Edit5.Text;
    Form2.ADOTable1.FieldByName(‘kolichesrvostranic’).AsInteger:=StrToInt(edit6.Text);
    Form2.ADOTable1.FieldByName(‘stoimost’).AsInteger:=StrToInt(edit7.Text);
    Form2.ADOTable1.FieldByName(‘aftor’).AsString:=Edit3.Text;
    //Form2.ADOQuery1.FieldByName(‘ñïèñàíî’).AsString:=Edit8.Text;
    Form2.ADOTable1.FieldByName(‘annotaciy’).AsString:=DBMemo1.Text;
    if RadioButton1.Checked then Form2.ADOTable1.FieldByName(‘spisano’).AsString:=edit9.Text;
    if RadioButton1.Checked then Form2.ADOTable1.FieldByName(‘spisano’).AsString:=edit10.Text;
    //Form2.ADOTable1.FieldByName(‘íîìåð æàíðà’).AsInteger:=StrToInt(Combobox1.Text);
    Form2.ADOTable1.FieldByName(‘nazvanie’).Value := DBLookupComboBox1.KeyValue;
    Form2.ADOTable1.FieldByName(‘nazvanie’).Value := DBLookupComboBox2.KeyValue;
    Form2.ADOTable1.FieldByName(‘nazvanie’).Value := DBLookupComboBox3.KeyValue;
    Form2.ADOTable1.Post;
    edit1.Clear;
    edit2.Clear;
    edit3.Clear;
    edit4.clear;
    edit5.Clear;
    edit6.Clear;
    edit7.clear;
    edit8.clear;
    close;
    end;

  17. Саша:

    При нажатии на кнопку «Сохранить вылетает ошибка»
    adoquery1 dataset not in edit or insert mode

    try
    ADOQuery1.Active:=True;
    ADOQuery1.Post;
    except
    on e:Exception do
    end;

  18. Саша:

    Андрей, а в чем тогда ошибка?

    на других форма вообще не указываю что сохранять, а он спокойно сохраняет, воспользовался Вашим примером.

    procedure TForm4.Button5Click(Sender: TObject);
    begin
    try
    ADOQuery1.Active:=True;
    ADOQuery1.Post;
    ADOQuery1.FieldByName(‘number’).AsString:=DBLookupCombobox1.Text;
    ADOQuery1.FieldByName(‘data’).AsString:=Edit2.Text;
    ADOQuery1.FieldByName(‘fio_vod_1′).AsString:=DBLookupCombobox2.Text;
    ADOQuery1.FieldByName(‘fio_vod_2′).AsString:=DBLookupCombobox3.Text;
    ADOQuery1.FieldByName(‘fio_vod_3′).AsString:=DBLookupCombobox4.Text;
    ADOQuery1.FieldByName(‘fio_vod_4′).AsString:=DBLookupCombobox5.Text;
    ADOQuery1.FieldByName(‘mar_1′).AsString:=DBLookupCombobox6.Text;
    ADOQuery1.FieldByName(‘mar_2′).AsString:=DBLookupCombobox7.Text;
    ADOQuery1.FieldByName(‘mar_3′).AsString:=DBLookupCombobox8.Text;
    ADOQuery1.FieldByName(‘mar_4′).AsString:=Edit1.Text;
    ADOQuery1.FieldByName(‘p_km_1′).AsFloat:=strtofloat(Edit11.Text);
    ADOQuery1.FieldByName(‘p_km_2′).AsFloat:=strtofloat(Edit12.Text);
    ADOQuery1.FieldByName(‘p_km_3′).AsFloat:=strtofloat(Edit13.Text);
    ADOQuery1.FieldByName(‘p_km_4′).AsFloat:=strtofloat(Edit14.Text);
    ADOQuery1.FieldByName(‘it_p_km’).AsFloat:=strtofloat(Edit15.Text);
    except
    on e:Exception do
    end;
    end;

  19. Саша:

    Или Вы имеете введи возможно где то просто пустой edit остался или Вы имеете в виду, что нужно что то в процедуре к кнопке сохранить дописать?

  20. Studentka:

    подскажите, пожалуйста, есть две таблицы chitatel и predpriytie, где idpred в таблице predpriytie первичный ключ и auto_increment, а в chitatel внешний, как можно положить в chitatel.idpred значение predpriytie.idpred???

  21. Алекс:

    Добрый день. У меня при добавлении в таблицу записи почему то запись не добавляется а просто заменяет собой выделенную запись… с чем это связанно?

  22. Аноним:

    ADOQuery1 ругается что работает с закрытым набором данных.
    Query.active и ADOConnection.connected установил эти свойства в True при нажатии кнопки. Все работает…

  23. Алекс:

    ADOQuery1 ругается что работает с закрытым набором данных.
    Query.active и ADOConnection.connected установил эти свойства в True при нажатии кнопки. Все работает…

  24. Алекс:

    procedure TForm3.Button1Click(Sender: TObject);
    begin
    try
    if (Trim(Edit1.Text)=») or (Trim(Edit2.Text)=») then
    begin
    exit;
    end;
    ADOConnection1.Connected:=true;
    ADOQuery1.active:=true;
    ADOQuery1.Insert;
    ADOQuery1.FieldByName(‘Название’).AsString:=Edit1.Text;
    ADOQuery1.FieldByName(‘Город’).AsString:=Edit2.Text;
    ADOQuery1.FieldByName(‘Улица’).AsString:=Edit3.Text;
    ADOQuery1.FieldByName(‘Дом-офис’).AsString:=Edit4.Text;
    ADOQuery1.FieldByName(‘Деятельность’).AsString:=Edit7.Text;
    ADOQuery1.FieldByName(‘Тел код’).AsString:=Edit5.Text;
    ADOQuery1.FieldByName(‘Телефон’).AsString:=Edit6.Text;
    Edit1.Clear;
    Edit2.Clear;
    Edit3.Clear;
    Edit4.Clear;
    Edit5.Clear;
    Edit6.Clear;
    Edit7.Clear;
    except
    on e:Exception do
    end;
    Form3.Close;
    Form1.show;
    end;
    Вот вся процедура. Работает но данные в БД не вводятся…
    В таблице есть поле с идентификаторам может с ним какие проблемы?

  25. Natasha:

    Пишу следующий код: temp := StrToInt(Edit1.Text); ADOQuery1.SQL.Add(‘SELECT * FROM Enterprise WHERE A0 = temp’)
    Выдает ошибку. Вариант, который вы предлагали выше (‘%’+Edit1.Text+’%’), не работает. Подскажите, как ещё можно фильтровать записи по заданному пользователем значению?

  26. Viss:

    есть 2 формы на них одна и та же бд если на одной добавляешь инфу то на 2 это никак не отображается можн окак то это исправить или нужн оделать вторую бд со связями с первой. заранее спасибо.

    • Andrey:

      Возможно Вам просто необходимо обновлять компоненты, где Вы используете одну и туже БД

  27. Ivan:

    Andrey, здравствуйте. В вашем примере используется только одна таблица, и все прекрасно работает. А у меня 2 таблицы со связью многие ко многим (+ одна связующая) и тут возникает проблема — изменения не сохраняются, а так же не удаляется запись. Выдает сообщение: Insufficient key column information for updating or refreshing. Может тут требуется какая-то хитрая SQL выборка? (обе ключевые колонки у меня присутствуют в запросе)

  28. Ivan:

    Извиняюсь, уже наткнулся на соответствующую статью) http://devdelphi.ru/?p=1271

  29. Dei:

    А как сделать редактирование если я не использую ADOQuery. А AdoTable. Я хотел сделать В таблице выбрав нужного человека нажать на него и нажать на кнопку редактировать откроется новая форма и там можно отредактировать его данные. После «ОК» и в таблице уже отредактированные он стоит…ну как то так…помогите решить эту проблему не могу сделать это как сделать в программировании я новичок ==

  30. Андрей:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    try
    if (Trim(Edit1.Text)=») or (Trim(Edit2.Text)=») then
    begin
    exit;
    end;
    описано для двух объектов edit, а если их больше как будет выглядеть код, что то никак не соображу, как понимаю тут идёт проверка на пробелы

  31. Konstantin:

    доброго времени суток, Статья очень хорошая спасибо!
    Но у меня возникла проблема при добавление:

    —————————
    Debugger Exception Notification
    —————————
    Project UBA_V3.exe raised exception class EOleException with message ‘[Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 2′. Process stopped. Use Step or Run to continue.
    —————————
    OK Help
    —————————

    вот код кнопки добавления

    procedure TF_main.btn2Click(Sender: TObject);
    begin

    try
    qry1.SQL.Clear;
    qry1.SQL.Add(‘SELECT * FROM Put WHERE vodii=Пастернак’);
    qry1.Active:=True;
    except
    on e:Exception do
    end;

    end;

  32. Konstantin:

    А еще вопрос: Нету примера организации поиска??

  33. Konstantin:

    Да через ADO, у меня было в АдоКонект Provider другое значение.
    А еще вопрос: Как проверить существует ли запись в таблице? например по определенному полю(если не сложно кусочек кода).Я так понял можно сделать запрос SELECT с значением поля которое вводим, а там потом если вернет не пустое значение то ShowMessage(‘запись существует’), но как реализовать не знаю. И еще один вопросик)) как заменить значение определённой ячейки, что бы не заменять всю строчку?
    буду очень благодарен за помощь.

  34. Andrew:

    Подскажите, Андрей, как произвести удаление записи с запроса
    SELECT Авто.[Код моделі], Авто.[Назва моделі], Виробник.[Виробник], Авто.Колір, Авто.Ціна, Авто.[Кількість дверей], Авто.[Потужність двигуна], Авто.[Тип салону], Авто.[Дата виготовлення]
    FROM Виробник INNER JOIN Авто ON Виробник.[Код виробника] = Авто.[Код виробника];
    Оно ругается на ключ:Недостаточные сведения о ключевом столбце для обновления:(

  35. Владислав:

    Первый раз работаю в Делфи…вы не могли бы подсказать куда нужно вставлять процедуру?

  36. Saha:

    Не знаю увидят ли мой коммент) но суть проблемы такая. все сделал базу подтянул. на онактив все выводит. добавил кнопку накидал процедурку
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    try
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(‘SELECT * ‘);
    ADOQuery1.SQL.Add(‘FROM proh’);
    ADOQuery1.SQL.Add(‘WHERE proh.ceh=ЛДС’);
    ADOQuery1.Active:=True;
    except
    on e:Exception do
    end;
    end;

    Но он ругается. пишет что недопустимое имя столбца ЛДС. хотя ЛДС это содержимое столбца а имя я прописал как proh.ceh. в чем может быть проблема. я сначало было подумал что из за того что у меня стобцы по русски назывались.переделал в базе все равно та же фигня.

  37. Роман:

    Подскажите пожалуста как добавить в Б/д из ComboBox и CheckBox

    (из Edit согласно примеру получается неплохо а вот из ComboBox и CheckBox неполучается)

    За помощь буду очен благодарен.

  38. Роман:

    Огромное спасибо

  39. Михаил:

    Добрый день. Спасибо за статьи по ADO. Подскажите пожалуйста, как можно сделать так, чтобы поиск осуществлялся не по заранее заданному имени (у вас, например, Иван), а по информации, допустим, из Edit’a?

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*