Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Ошибка Invalid Parameter!!!

Ответить
Настройки темы
Delphi - Ошибка Invalid Parameter!!!

В Поисках Истины


Сообщения: 802
Благодарности: 135


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: LilLoco
Дата: 14-09-2010
Описание: Добавление инфы
Люди, помогите пожалуйста!Выскакивает ошибка 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

Отправлено: 14:45, 14-09-2010

 

Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


попробуй так:
query2.SQL.Add(Format('SELECT A FROM " %s " where B = 100 ', [dir]);

Отправлено: 21:45, 14-09-2010 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


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

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 07:45, 15-09-2010 | #3


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


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'
Если объявляли константу с двойными кавычками сразу, то получите другое сообщение об ошибке.

Отправлено: 13:36, 15-09-2010 | #4


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar srcD6.rar
(1019 байт, 1 просмотров)

Вот пример перекрытия константы.

Отправлено: 14:04, 15-09-2010 | #5


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата SoundHorror:
то возвожно Вы определили где-то локальную переменную dir и перекрыли ей константу. Именно в этом случае получите '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);
строка подключения вообще пустая!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 15:02, 15-09-2010 | #6


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar srcD6-1.rar
(1003 байт, 3 просмотров)

выложите свой код, и версию среды укажите. Query стандартный от BDE? Этот пример (см.вложние) у Вас работает?

Отправлено: 15:19, 15-09-2010 | #7


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть еще одна бредовая мысль, но ввиду отсутствия других вариантов я ее выскажу:
Может в каком-нибудь используемом модуле переопределен тип String так чтобы длина постоянно была равна нулю?

Отправлено: 15:52, 15-09-2010 | #8


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата SoundHorror:
Может в каком-нибудь используемом модуле переопределен тип String так чтобы длина постоянно была равна нулю? »
Нет такого нет ничего!

Работает все почему то кроме этого куска кода!
Вот что еще оказывается :

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

Отправлено: 16:04, 15-09-2010 | #9


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:15, 15-09-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Ошибка Invalid Parameter!!!

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - [решено] invalid partition table Vaho83 Накопители (SSD, HDD, USB Flash) 15 08-03-2013 19:20
Разное - invalid partition table jckson05 Microsoft Windows 2000/XP 21 02-08-2011 19:49
Debian/Ubuntu - invalid encoding в названиях файлов allin1 Общий по Linux 6 14-06-2010 02:52
Router - Invalid Mac adress antikiller_bm Сетевое оборудование 0 18-02-2010 02:21
Invalid system disky, I/O errory... AR Microsoft Windows 95/98/Me (архив) 20 15-02-2005 23:52




 
Переход