Delphi - Ошибка Invalid Parameter!!!

Ответить
 • Просмотры: 1
Аватара пользователя
LilLoco

Delphi - Ошибка Invalid Parameter!!!

Сообщение LilLoco »

Люди, помогите пожалуйста!Выскакивает ошибка Invalid Parameter при выполнении запроса выбора данных!приблизительный код :





Код:

Код: Выделить всё

query1.Close;
query1.SQL.Add(тут что то выбираем);
query1.open;
//выполняем цикл по всему выбранному
while not query1.eof do
begin
      ........................... //что нибудь делаем
      query2.close;
      query2.SQL.Add('SELECT A FROM " ' + dir + ' " where B = 100 ')
 (*)  query2.open;
       ....................      //что нибудь делаем
       query2.close;
      ...........................//что нибудь делаем
      query1.next;
end;

при выполнении данного куска, на строке (*) вылетает ошибка!

dir - константа,указывающая таблицу!





Код:

Код: Выделить всё

const dir : string = 'D:\aaa.dbf';

Но вот ищо один момент, если в строке (*), в запрос вбить все не используя переменные и константы :





Код:

Код: Выделить всё

query2.SQL.Add('SELECT A FROM "  D:\aaa.dbf " where B = 100 ')

то все хорошо обрабатывается, и никаких ошибок! в чем причина этого???раньше такого не было в других кусках кода, почти идентичных этому!



посмотрел строку sql - запроса перед его выполнением, она почему то имеет такой вид :







Код:

Код: Выделить всё

'SELECT A FROM "" WHERE B = 100'#$D#$A
Аватара пользователя
Alan85

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение Alan85 »

попробуй так:

query2.SQL.Add(Format('SELECT A FROM " %s " where B = 100 ', [dir]);
Аватара пользователя
LilLoco

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение LilLoco »

Alan85, Спасибо за вариант, но с ним тоже, увы, строка запроса имеет такой же вид, и запрос не выполняется Изображение
Аватара пользователя
SoundHorror

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение SoundHorror »

1. Попробуйте задавать ваш dir сразу с двойными кавычками





Код:

Код: Выделить всё

const dir = ' "D:\aaa.dbf" '

Тогда будет так:



Код:

Код: Выделить всё

query2.SQL.Add('SELECT A FROM '+dir+' where B = 100 ')

2. Если перед выполнением запроса Вы видите это:



Код:

Код: Выделить всё

'SELECT A FROM "" WHERE B = 100'#$D#$A

то возвожно Вы определили где-то локальную переменную dir и перекрыли ей константу. Именно в этом случае получите 'invalid parameter'

Если объявляли константу с двойными кавычками сразу, то получите другое сообщение об ошибке.
Аватара пользователя
SoundHorror

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение SoundHorror »

Вот пример перекрытия константы.
Вложения
srcD6.rar
(1019 байт) 0 скачиваний
srcD6.rar
(1019 байт) 0 скачиваний
Аватара пользователя
LilLoco

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение LilLoco »

Цитата SoundHorror:



то возвожно Вы определили где-то локальную переменную dir и перекрыли ей константу. Именно в этом случае получите 'invalid parameter'
Delphi - Ошибка Invalid Parameter!!!




Это проверил первым же делом, таких совпадений не нашел!!!

Попробовал, сообщение Invalid Use of keyword WHERE....!запрос выглядит так :





Код:

Код: Выделить всё

'SELECT A FROM  WHERE B = 100'#$D#$A

Почему то строка запроса вообще не воспринимает констант и переменных!даже если делать так :





Код:

Код: Выделить всё

B := '100' //переменная типа string
query2.SQL.Add('SELECT A FROM " ' + dir + ' " WHERE B = ' + B);

то вид имеет такой :





Код:

Код: Выделить всё

'SELECT A FROM " " WHERE B = '#$D#$A

и даже если так :





Код:

Код: Выделить всё

strQuery := 'SELECT A FROM "D:\aaa.dbf" WHERE B = 100';
query2.SQL.Add(strQuery);

строка подключения вообще пустая!
Аватара пользователя
SoundHorror

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение SoundHorror »

выложите свой код, и версию среды укажите. Query стандартный от BDE? Этот пример (см.вложние) у Вас работает?
Вложения
Вложение srcD6-1.rar больше недоступно
Вложения
srcD6-1.rar
(1003 байт) 0 скачиваний
srcD6-1.rar
(1003 байт) 0 скачиваний
Аватара пользователя
SoundHorror

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение SoundHorror »

Есть еще одна бредовая мысль, но ввиду отсутствия других вариантов я ее выскажу:

Может в каком-нибудь используемом модуле переопределен тип String так чтобы длина постоянно была равна нулю?
Аватара пользователя
LilLoco

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение LilLoco »

Цитата SoundHorror:



Может в каком-нибудь используемом модуле переопределен тип String так чтобы длина постоянно была равна нулю?
Delphi - Ошибка Invalid Parameter!!!




Нет такого нет ничего!



Работает все почему то кроме этого куска кода!

Вот что еще оказывается :



в этом куске кода query2 создается программно! попробовал добавить на форму Query( Query3), и поменял query2 на query3, все нормально обрабатывается и выполняется!Может ли это быть каким либо багом?Еще люди советуют перезагрузить комп, может ли это влиять? Изображение

З.Ы. Комп работает уже дня 3 - 4, и среда тоже!
Аватара пользователя
SoundHorror

Re: Delphi - Ошибка Invalid Parameter!!!

Сообщение SoundHorror »

Дайте же посмотреть этот кусок кода от места где Query2 создается программно до его открытия. Может там чего и намудрили? Чудес в коде не бывает.
Ответить

Вернуться в «Программирование и базы данных»