Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.07.2009, 00:01
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию Ошибки при запросах

В общем работает примерно вот так:
Клиент отправляет данные\на сервере они разбиваются по едитам...
с помощью вот этой процедурки провеяется и выбирается обновлять данные или занести:
Код:
adoquery2.sql.text:='SELECT * FROM table1  WHERE ip='+Edit5.Text+ '';
ADOQuery2.open;
edit3.Text:=inttostr(ADOQuery2.RecordCount);
  if ADOQuery2.RecordCount <> 0 then
     Button3.Click       //Кнопка обеновляет данные 
     else button1.Click;  //кнопка вносит данные
Я выбираю если есть уже такая запись ,то следует обновить данные ,если нету то внести данные в таблицу ...
Возникает вот такая ошибка :
"Число содержит синтаксическую ошибку в выражении запроса ip=192.168.0.100"
Типы всех значений в таблице это текст...
Вторая ошибка возникает при обновлении данных,делаю вот так :
Код:
var
tmp_query: string;
begin
ADOQUery1.Active:=false;
DAtaSource1.Enabled:=false;
tmp_query:=ADOQUERY1.SQL.Text;
adoquery1.sql.text:='UPDATE table1 SET'#13#10+
                            'fio = ' + QuotedStr(Edit2.Text) + ','#13#10 +
                            'E-mail = '+ QuotedStr(Edit4.Text) + ','#13#10 +
                            'id = '+ QuotedStr(Edit1.Text) + ','#13#10 +
                            'icq = '+ QuotedStr(Edit6.Text) + ','#13#10 +
                            'info = '+ QuotedStr(Edit7.Text) + #13#10 +
                            'WHERE ip='+Edit5.Text;
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text :=tmp_query;
ADOQUery1.Active:=true;
Datasource1.Enabled:=true;
(Данный запрос мне помогли сделать в топике чуть ниже,он работал с полем id ,которое тогда было числовым)
То есть работает только занос в бд ...

Последний раз редактировалось Booo, 12.07.2009 в 00:04.
Ответить с цитированием
  #2  
Старый 13.07.2009, 21:54
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Кто нибудь :'(
Ответить с цитированием
  #3  
Старый 13.07.2009, 22:30
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

в последней строке запросе забыл QuotedStr. поставь - заработает.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #4  
Старый 13.07.2009, 23:21
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Цитата:
Сообщение от DJ PhoeniX
в последней строке запросе забыл QuotedStr. поставь - заработает.
Ошибка синтаксиса в инструкции UPDATE

Не помогает
Код:
ADOQUery1.Active:=false;
DAtaSource1.Enabled:=false;
tmp_query:=ADOQUERY1.SQL.Text;
adoquery1.sql.text:='UPDATE table1 SET'#13#10+
                            'fio = ' + QuotedStr(Edit2.Text) + ','#13#10 +
                            'E-mail = '+ QuotedStr(Edit4.Text) + ','#13#10 +
                            'id = '+ QuotedStr(Edit1.Text) + ','#13#10 +
                            'icq = '+ QuotedStr(Edit6.Text) + ','#13#10 +
                            'info = '+ QuotedStr(Edit7.Text) + #13#10 +
                            'WHERE ip='+QuotedStr(Edit5.Text);
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text :=tmp_query;
ADOQUery1.Active:=true;
Datasource1.Enabled:=true;
Ответить с цитированием
  #5  
Старый 14.07.2009, 00:19
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Я понял.
Не помогает? что пишет?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #6  
Старый 14.07.2009, 00:22
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Ошибка синтаксиса в инструкции UPDATE
В общем такое впечатление что если в условии where ip ,ip Должно быть обязательно числом,еслли это число то это работает...а вот если строка ,то нет(((

Последний раз редактировалось Booo, 14.07.2009 в 00:24.
Ответить с цитированием
  #7  
Старый 14.07.2009, 01:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я бы скорее грешил на поле E-mail.
Ответить с цитированием
  #8  
Старый 14.07.2009, 02:38
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Как убрал это поле все встало на свои места.Спасибо майк огромное!!!
А что не так было с этим полем?
Ответить с цитированием
  #9  
Старый 04.08.2009, 23:46
Booo Booo вне форума
Новичок
 
Регистрация: 03.07.2008
Сообщения: 93
Репутация: 10
По умолчанию

Так что было все таки не так с этим полем?
Ответить с цитированием
  #10  
Старый 05.08.2009, 00:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Минус там не так. Просто сервер это воспринимает как математическую операцию. Попробуй взять это поле в кавычки или в кв. скобки (именно имя поля).
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter