Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Туплю с параметрами запроса - обидно, вроде не key пишу а [key] все равно :( 
:(
    Опции темы
Bes
Дата 8.6.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



Не могу запихать в параметры значение поля key мля smile

вот так все работает

Цитата

key:=716498;
UpdateLitNomStringNew:='update prod set nom = 77 
where [key] = '+inttostr(key)+' and not exists 
(select * from prod where nom = :onom and [data] = :odata and stch = :stch)';
     T:=now;
          Form1.QueryChek.Active:=false;
          max:=76;
          Form1.QueryChek.SQL.Text:=UpdateLitNomStringNew;
          Form1.QueryChek.Parameters[0].Value:=max+1;
          DateTimeToString(Sdt,'dd.mm.yyyy',T);
          Form1.QueryChek.Parameters[1].Value:=StrToDate(sdt);
          Form1.QueryChek.Parameters[2].Value:=false;
          Form1.QueryChek.ExecSQL;
     

после такого
Form1.QueryChek.RowsAffected=1

а когда пишу так

Цитата

key:=716498;
UpdateLitNomStringNew:='update prod set nom = 77 
where [key] = :kkk and not exists 
(select * from prod where nom = :onom and [data] = :odata and stch = :stch)';
     T:=now;
          Form1.QueryChek.Active:=false;
          max:=76;
          Form1.QueryChek.SQL.Text:=UpdateLitNomStringNew;
          Form1.QueryChek.Parameters[0].Value:=key;
          Form1.QueryChek.Parameters[1].Value:=max+1;
          DateTimeToString(Sdt,'dd.mm.yyyy',T);
          Form1.QueryChek.Parameters[2].Value:=StrToDate(sdt);
          Form1.QueryChek.Parameters[3].Value:=false;
          Form1.QueryChek.ExecSQL;
     

после такого
Form1.QueryChek.RowsAffected=0
и не ошибки ничего просто не выполняется запрос ка будто одно условие не выполняется.

мать.... не могу найти в чем косяк через БДЕ работало щас перевожу на АДО и вот такая хрень.... smile

P.S. разбираюсь и нашел такую штуку:
проблема в том что нельзя задавать еще одно условие с подзапросом т.е. или
where [key] = :kkk
или
where not exists
(select * from prod where nom = :onom and [data] = :odata and stch = :stch)'
причем для БДЕ+Акцесс и для АДО+SQLServer все работает а для АДО+Акцесс вот такой косяк
ну пипец......... smile

Это сообщение отредактировал(а) Bes - 8.6.2005, 14:07
PM MAIL   Вверх
SPrograMMer
Дата 8.6.2005, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: 1
Всего: 6



Цитата(Bes @ 8.6.2005, 13:09)
Parameters[1].

Обращаться к параметрам по индексу не очень.... Ты на 200% можешь гарантировать что под этим индексом нужнывй тебе параметр?
Лучше использовать ....ParamsByName('kkk').AsInteger:=kkk


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
Bes
Дата 9.6.2005, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 2
Всего: 7



Всю жизнь работало...... smile
Ладно попробую.

Эээээ..... какой нафиг ParamsByName? у TADOQuery нет такой штуки а с TQuery т.е. с БДЕ у меня и так все работет.

Это сообщение отредактировал(а) Bes - 9.6.2005, 06:37
PM MAIL   Вверх
Alex
Дата 15.6.2005, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



А если так:
Код

key:=716498;
UpdateLitNomStringNew:='update prod set nom = 77 
where [key] = :kkk and not exists 
(select * from prod where nom = :onom and [data] = :odata and stch = :stch)';
     T:=now;
          Form1.QueryChek.Active:=false;
          max:=76;
          Form1.QueryChek.SQL.Text:=UpdateLitNomStringNew;
          Form1.QueryChek.Parameters.ParseSQL(Form1.QueryChek.SQL.Text, True);
          Form1.QueryChek.Parameters[0].Value:=key;
          Form1.QueryChek.Parameters[1].Value:=max+1;
          DateTimeToString(Sdt,'dd.mm.yyyy',T);
          Form1.QueryChek.Parameters[2].Value:=StrToDate(sdt);
          Form1.QueryChek.Parameters[3].Value:=false;
          Form1.QueryChek.ExecSQL;



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.