Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
1

ADO технология. Delphi. SQL

31.01.2016, 15:43. Показов 959. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сама учусь еще только работать с БД и Delphi в целом. Поэтому хочу спросить. Имеется таблица "Clienti" в которой есть поле "Familiya". Нужно организовать поиск с конструкцией Like. Пользовалась уроком, который скинул препод. Но что-то не идет. Ругается и говорит: ошибка синтаксиса в предложении from.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TClienti.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  pos:word;
begin
   if Key>47 then
    begin
     Edit2.ClearSelection;
     Pos:=Length(Edit2.Text);
     ADOQuery1.SQL.Add('SELECT * FROM Clienti WHERE Familiya LIKE:Fam');
     ADOQuery1.Parameters.ParamValues['Fam']:=Trim(Edit2.Text)+'%';
     ADOQuery1.Active:=True;
     with ADOQuery1 do
      begin
       if Active then
        Close;
       Open;
       if FieldByName('Familiya').IsNull=False then
        begin
        Edit2.Text:=fieldbyname('Familiya').AsString;
        Edit2.SelStart:=Pos;
        Edit2.SelLength:=length(Edit2.Text)-1;
        ADOQuery1.SQL.Clear;
        end
       else MessageBeep(0);
      end;
    end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2016, 15:43
Ответы с готовыми решениями:

Delphi и SQL (ADO, Access)
Здравствуйте. Возникла такая проблема: Использую Access через ADO. Создаю новое поле (столбец) в...

Delphi+ADO+access SQL запрос
Добрый день уважаемые програмисты!. Помогите разобраться. Есть таблица в Аксесе: Data Doxod ...

Работает ли ADO для Delphi 7 MS SQL 2014
При попытке подключиться к базе данных на MS SQL 2014 через ADOConnection Delphi 7 выходит ошибка...

Delphi 7.0 + ADO + SQL Server 2005 реализация Undo
Имеется база данных с таблицой в которой имеется поле усле оно = True то запись считается...

21
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
31.01.2016, 15:47  [ТС] 2
Сама учусь еще только работать с БД и Delphi в целом. Поэтому хочу спросить. Имеется таблица "Clienti" в которой есть поле "Familiya". Нужно организовать поиск с конструкцией Like. Пользовалась уроком, который скинул препод. Но что-то не идет. Ругается и говорит: ошибка синтаксиса в предложении from.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TClienti.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  pos:word;
begin
   if Key>47 then
    begin
     Edit2.ClearSelection;
     Pos:=Length(Edit2.Text);
     ADOQuery1.SQL.Add('SELECT Familiya FROM Clienti WHERE Familiya LIKE:Fam');
     ADOQuery1.Parameters.ParamValues['Fam']:=Trim(Edit2.Text)+'%';
     ADOQuery1.Active:=True;
     with ADOQuery1 do
      begin
       if Active then
        Close;
       Open;
       if FieldByName('Familiya').IsNull=False then
        begin
        Edit2.Text:=fieldbyname('Familiya').AsString;
        Edit2.SelStart:=Pos;
        Edit2.SelLength:=length(Edit2.Text)-1;
        ADOQuery1.SQL.Clear;
        end
       else MessageBeep(0);
      end;
    end;
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
31.01.2016, 16:03 3
lolita322, забыли пробел между LIKE и :
1
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
31.01.2016, 16:05 4
Цитата Сообщение от lolita322 Посмотреть сообщение
LIKE:Fam
Тут бы пробельчик поставить не помешает.
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
31.01.2016, 16:10  [ТС] 5
Цитата Сообщение от Hikari Посмотреть сообщение
Тут бы пробельчик поставить не помешает.
Ставила, все также ошибка
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
31.01.2016, 16:40  [ТС] 6
schdub, Спасибо. Уже заметила. Если не сложно ответьте на еще один вопрос. В свойстве Parametres компонента ADOQuery создала параметр Fam, но при активации поиска программа ругается и говорит что параметр не найден.
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
31.01.2016, 16:40 7
lolita322, вместо
Цитата Сообщение от lolita322 Посмотреть сообщение
Delphi
1
ADOQuery1.Parameters.ParamValues['Fam']:=Trim(Edit2.Text)+'%';
попробуйте:
Delphi
1
ADOQuery1.Parameters.ParamByName('Fam').Value:=Trim(Edit2.Text)+'%';
PS: на будущее вы создали тему не в том разделе (нужно было в https://www.cyberforum.ru/delphi-database/).
PPS: пишу по памяти, т.к. давно не работаю с Delphi.
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
31.01.2016, 16:42  [ТС] 8
schdub, Спасибо! После создания темы только заметила, а как перетащить не знаю. Поэтому туда продублировала
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
31.01.2016, 17:08 9
Цитата Сообщение от lolita322 Посмотреть сообщение
все также ошибка
А так?:
Delphi
1
2
3
4
     ADOQuery1.SQL.Add('SELECT Familiya FROM Clienti WHERE Familiya LIKE '
              +QuotedStr(Trim(Edit2.Text)+'%'));
     ADOQuery1.Active:=True;
...
1
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
31.01.2016, 17:20  [ТС] 10
Hikari, ошибка. Попробовала сейчас вновь поставить пробел все норм заработало
Только теперь говорит, что не найден параметр. Создавала его через свойство parametres компонента adoquery
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
31.01.2016, 18:13 11
Цитата Сообщение от lolita322 Посмотреть сообщение
не найден параметр
Покажи свой последний вариант кода.
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
31.01.2016, 18:20  [ТС] 12
Hikari,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TClienti.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  pos:word;
begin
   if Key>47 then
    begin
     Edit2.ClearSelection;
     Pos:=Length(Edit2.Text);
     ADOQuery1.SQL.Add('SELECT Familiya FROM Clienti WHERE Familiya LIKE : Fam');
     ADOQuery1.Parameters.ParamValues['Fam']:=Trim(Edit2.Text)+'%';
     ADOQuery1.Active:=True;
     with ADOQuery1 do
      begin
       if Active then
        Close;
       Open;
       if FieldByName('Familiya').IsNull=False then
        begin
        Edit2.Text:=fieldbyname('Familiya').AsString;
        Edit2.SelStart:=Pos;
        Edit2.SelLength:=length(Edit2.Text)-1;
        ADOQuery1.SQL.Clear;
        end
       else MessageBeep(0);
      end;
    end;
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
31.01.2016, 19:27 13
Жуткая какая-то смесь у тебя вышла...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
procedure TClienti.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 
 procedure Ed(s:string);
 var
  pos:word;
 begin
   with Edit2 do begin
       ClearSelection;
        Pos:=Length(Text);
        Text:=s;
        SelStart:=Pos;
        SelLength:=length(Text)-1;
  end;
 end;
 
begin
   if Key>47 then
      with ADOQuery1 do begin
       Active:=False;
       SQL.Text:=('SELECT Familiya FROM Clienti WHERE Familiya LIKE : Fam');
       Parameters.ParamValues['Fam']:=Trim(Edit2.Text)+'%';
      Try
       Active:=True;
       if not FieldByName('Familiya').IsNull then Ed(fieldbyname('Familiya').AsString);
      Except
          on E:Exception do ShowMessage('Ошибка при открытии запроса: '+e.Message);
      end;
     end;
 
end;
Хотя бы так вот напиши что ли...
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
01.02.2016, 13:45  [ТС] 14
Hikari, я пробовала пересоздать параметр и естественно исправила его в коде.( вместо fam, просто F). До этого на Fam тож ругался
Миниатюры
ADO технология. Delphi. SQL   ADO технология. Delphi. SQL  
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,135
Записей в блоге: 3
01.02.2016, 13:53 15
параметр пишется как :F
а дальше вы пишите ADOQueru1.Params[0].value:=

то что у вас после Active:=true - неправильно
подумайте что будет если таких записей несколько
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
01.02.2016, 14:20  [ТС] 16
qwertehok, можете объяснить по полочкам? Не совсем поняла что вы хотите сказать. Ибо с базами столкнулась всего пару месяцев назад
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,135
Записей в блоге: 3
01.02.2016, 14:42 17
скопируйте сюда текст процедуры
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
01.02.2016, 14:46  [ТС] 18
qwertehok,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TClienti.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  pos:word;
begin
   if Key>47 then
    begin
     Edit2.ClearSelection;
     Pos:=Length(Edit2.Text);
     ADOQuery1.SQL.Add('SELECT Familiya FROM Clienti WHERE Familiya LIKE : F');
     ADOQuery1.Parameters.ParamValues['F']:=Trim(Edit2.Text)+'%';
     ADOQuery1.Active:=True;
     with ADOQuery1 do
      begin
       if Active then
        Close;
       Open;
       if FieldByName('Familiya').IsNull=False then
        begin
        Edit2.Text:=fieldbyname('Familiya').AsString;
        Edit2.SelStart:=Pos;
        Edit2.SelLength:=length(Edit2.Text)-1;
        ADOQuery1.SQL.Clear;
        end
       else MessageBeep(0);
      end;
    end;
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,135
Записей в блоге: 3
01.02.2016, 14:51 19
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TClienti.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  pos:word;
begin
   if Key>47 then
    begin
     Edit2.ClearSelection;
     Pos:=Length(Edit2.Text);
     ADOQuery1.SQL.Add('SELECT Familiya FROM Clienti WHERE Familiya LIKE :F');
     ADOQuery1.Params[0]:=Trim(Edit2.Text)+'%';
     ADOQuery1.Active:=True;
     if ADOQuery1.RecordCount=1 then
     begin
        Edit2.Text:=ADOQuery1.Fields[0].AsString;
        Edit2.SelStart:=Pos;
        Edit2.SelLength:=length(Edit2.Text)-1;
     end
     else showmessage('Найдено несколько фамилий '+inttostr(ADOQuery1.RecordCount));
end;
как-то так
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 42
01.02.2016, 15:10  [ТС] 20
qwertehok, спасибо за помощь, но увы
Миниатюры
ADO технология. Delphi. SQL  
0
01.02.2016, 15:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2016, 15:10
Помогаю со студенческими работами здесь

Удаление записей Delphi - Ado - Access через SQL Between
Доброго времени суток. БД - для учета школьных олимпиад. Нужно написать запрос для удаления...

Подключение базы данных sql к delphi через ADO
Здравствуйте. При подключении базы данных созданной в sql managment studio через ADODB возникает...

Соединение с БД во время выполнения программы, технология ADO
Надо не только установить соединение, но и сохранить его настройки в файл для последующей загрузки....

ADO+MS SQL: как узнать количество обработанных строк при insert в ADO Query?
Добрый день. При выполнении запроса в MS SQL insert into ..(,,) select 0,20,'Text' where...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru