Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2014, 00:06   #1
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию Проблема с ADOQuery

Проблема с ADOQuery. Фрагмент кода на Delphi 7:

Код:
        DM.ADOQuery1.Close;
        DM.ADOQuery1.Active := False;
        DM.ADOQuery1.SQL.Clear;
        DM.ADOQuery1.SQL.Add('INSERT INTO Firm (FirmName, Address, JurAddress, Phone1, Phone2, Fax, Email, Site, OGRN, INN, OKPO, Bank, RS, KS, BIK)');
        DM.ADOQuery1.SQL.Add('values(:fm, :adr, :jadr, :ph1, :ph2, :fx, :em, :st, :ogrn, :inn, :okpo, :bk, :rs, :ks, :bik)');
        DM.ADOQuery1.Parameters.ParseSQL(DM.ADOQuery1.SQL.text, true);
        DM.ADOQuery1.Parameters.ParamByName('fm').Value := Form1.DBEdit1.Text;;
        DM.ADOQuery1.Parameters.ParamByName('adr').Value := Form1.DBEdit2.Text;
        DM.ADOQuery1.Parameters.ParamByName('jadr').Value := Form1.DBEdit3.Text;
        DM.ADOQuery1.Parameters.ParamByName('ph1').Value := Form1.DBEdit4.Text;
        DM.ADOQuery1.Parameters.ParamByName('ph2').Value := Form1.DBEdit5.Text;
        DM.ADOQuery1.Parameters.ParamByName('fx').Value := Form1.DBEdit6.Text;
        DM.ADOQuery1.Parameters.ParamByName('em').Value := Form1.DBEdit7.Text;
        DM.ADOQuery1.Parameters.ParamByName('st').Value := Form1.DBEdit8.Text;
        DM.ADOQuery1.Parameters.ParamByName('ogrn').Value := Form1.DBEdit9.Text;
        DM.ADOQuery1.Parameters.ParamByName('inn').Value := Form1.DBEdit10.Text;
        DM.ADOQuery1.Parameters.ParamByName('okpo').Value := Form1.DBEdit11.Text;
        DM.ADOQuery1.Parameters.ParamByName('bk').Value := Form1.DBEdit12.Text;
        DM.ADOQuery1.Parameters.ParamByName('rs').Value := Form1.DBEdit13.Text;
        DM.ADOQuery1.Parameters.ParamByName('ks').Value := Form1.DBEdit14.Text;
        DM.ADOQuery1.Parameters.ParamByName('bik').Value := Form1.DBEdit15.Text;
        DM.ADOQuery1.ExecSQL;
При выполнении
Код:
DM.ADOQuery1.SQL.Add('values(:fm, :adr, :jadr, :ph1, :ph2, :fx, :em, :st, :ogrn, :inn, :okpo, :bk, :rs, :ks, :bik)');
вылезает ошибка

"Аргументы имеют неверный тип выходят за пределы допустимого диапазона"

Ни как не могу понять в чем дело

Честно - я пока не работал c ADOQuery

Последний раз редактировалось Muramidaza; 17.02.2014 в 00:08.
Muramidaza вне форума Ответить с цитированием
Старый 17.02.2014, 00:17   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Строку с ParseSQL попробуйте закоментировать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 00:39   #3
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Строку с ParseSQL попробуйте закоментировать
Без нее тоже не работает, ошибка возникает до нее - на предыдущей строке.

Последний раз редактировалось Muramidaza; 17.02.2014 в 00:41.
Muramidaza вне форума Ответить с цитированием
Старый 17.02.2014, 01:58   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

СУБД какая?
Каким провайдером пользуетесь?
Свойства Filter и Filtered в каком состоянии у ADOQuery?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 02:42   #5
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Код:
DM.ADOQuery1.Parameters.ParamByName('fm').Value := Form1.DBEdit1.Text;;
??
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Старый 17.02.2014, 04:01   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Попробуйте так . и DBEdit замените на Edit -е
Код:
        with DM.ADOQuery1 do
         begin
           SQL.Clear;
           SQL.Add('INSERT INTO Firm (FirmName, Address, JurAddress, Phone1, Phone2, Fax, Email, Site, OGRN, INN, OKPO, Bank, RS, KS, BIK)');
           SQL.Add(' values(:fm, :adr, :jadr, :ph1, :ph2, :fx, :em, :st, :ogrn, :inn, :okpo, :bk, :rs, :ks, :bik)');
               Parameters.ParamByName('fm').Value := Form1.Edit1.Text; 
               Parameters.ParamByName('adr').Value := Form1.Edit2.Text;
               Parameters.ParamByName('jadr').Value := Form1.Edit3.Text;
               Parameters.ParamByName('ph1').Value := Form1.Edit4.Text;
               Parameters.ParamByName('ph2').Value := Form1.Edit5.Text;
               Parameters.ParamByName('fx').Value := Form1.Edit6.Text;
               Parameters.ParamByName('em').Value := Form1.Edit7.Text;
               Parameters.ParamByName('st').Value := Form1.Edit8.Text;
               Parameters.ParamByName('ogrn').Value := Form1.Edit9.Text;
               Parameters.ParamByName('inn').Value := Form1.Edit10.Text;
               Parameters.ParamByName('okpo').Value := Form1.Edit11.Text;
               Parameters.ParamByName('bk').Value := Form1.Edit12.Text;
               Parameters.ParamByName('rs').Value := Form1.Edit13.Text;
               Parameters.ParamByName('ks').Value := Form1.Edit14.Text;
               Parameters.ParamByName('bik').Value := Form1.Edit15.Text;
               ExecSQL;
               Open;
        end;
xxbesoxx вне форума Ответить с цитированием
Старый 17.02.2014, 06:21   #7
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

values(:fm
____^
пробел?
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 17.02.2014, 19:31   #8
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Попробуйте так . и DBEdit замените на Edit -е
Код:
        with DM.ADOQuery1 do
         begin
           SQL.Clear;
           SQL.Add('INSERT INTO Firm (FirmName, Address, JurAddress, Phone1, Phone2, Fax, Email, Site, OGRN, INN, OKPO, Bank, RS, KS, BIK)');
           SQL.Add(' values(:fm, :adr, :jadr, :ph1, :ph2, :fx, :em, :st, :ogrn, :inn, :okpo, :bk, :rs, :ks, :bik)');
               Parameters.ParamByName('fm').Value := Form1.Edit1.Text; 
               Parameters.ParamByName('adr').Value := Form1.Edit2.Text;
               Parameters.ParamByName('jadr').Value := Form1.Edit3.Text;
               Parameters.ParamByName('ph1').Value := Form1.Edit4.Text;
               Parameters.ParamByName('ph2').Value := Form1.Edit5.Text;
               Parameters.ParamByName('fx').Value := Form1.Edit6.Text;
               Parameters.ParamByName('em').Value := Form1.Edit7.Text;
               Parameters.ParamByName('st').Value := Form1.Edit8.Text;
               Parameters.ParamByName('ogrn').Value := Form1.Edit9.Text;
               Parameters.ParamByName('inn').Value := Form1.Edit10.Text;
               Parameters.ParamByName('okpo').Value := Form1.Edit11.Text;
               Parameters.ParamByName('bk').Value := Form1.Edit12.Text;
               Parameters.ParamByName('rs').Value := Form1.Edit13.Text;
               Parameters.ParamByName('ks').Value := Form1.Edit14.Text;
               Parameters.ParamByName('bik').Value := Form1.Edit15.Text;
               ExecSQL;
               Open;
        end;
Скопировал вставил (на форму набросал обычных едитов) - та же самая ошибка. В ходе экспериментов выяснилось что ругань возникает при обнаружении в SQL.Add() любого артефакта с двоеточием - пробовал так
Код:
(Select * from firm where firmname = :fm)
. Если артефакт убрать - все ОК.

Свойства filter - пустое, filtred - false

Удалил ADOQuery и поставил другой - тоже самое
Muramidaza вне форума Ответить с цитированием
Старый 17.02.2014, 19:52   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

СУБД и провайдер секретны? Или слова не знакомые? У ODBC-шных провайдеров бывает такая беда. Если так, то в данном случае придется забыть об параметрах
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 20:20   #10
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
СУБД и провайдер секретны? Или слова не знакомые? У ODBC-шных провайдеров бывает такая беда. Если так, то в данном случае придется забыть об параметрах
СУБД MySQL 5.5
Соединяется через MySQL ODBC 5.1

Но засада в том что ошибка происходит на этапе формирования запроса, он еще не отсылается на сервер
Muramidaza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с параметром в запросе ADOQuery akramar БД в Delphi 5 11.05.2013 22:03
Проблема с датой и с ADOquery Kamuist БД в Delphi 27 03.04.2013 20:40
Проблема с ADOQuery и Access hemn6vyr БД в Delphi 3 05.03.2013 18:37
проблема с запросом ADOQuery Kolya29 БД в Delphi 29 07.06.2010 20:38
[delphi] ADOQuery Проблема sPan4eZ БД в Delphi 14 17.09.2009 15:44