Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.05.08;
Скачать: CL | DM;

Вниз

Проблема парсинга TSQLQuery (dbExpress)..   Найти похожие ветки 

 
Jeer ©   (2011-01-27 09:54) [0]

с параметрами.
А что, она так и не решена ?
(D7, MS SQL 2000 SP3, Win 2003 srv ent.)

АваСтоп: no value given for one or more required parameters

s := "Abnormal";
 i := Random(100000);
 with quUpdate, SQL do begin
   Clear;
   Text := "INSERT INTO TMP(ID, MYNAME) VALUES(:ID,:MY)";
   Prepared := True;
   ParamByName("ID").AsInteger := i;
   ParamByName("MY").AsString  := s;
   ExecSQL(True);
 end;

Норма:
 s := "Normal";
 i := Random(100000);
 with quUpdate, SQL do begin
   Clear;
   Text := Format("INSERT INTO TMP(ID, MYNAME) VALUES(%d,%s)",[i,QuotedStr(s)]);
   ExecSQL(True);
 end;


 
12 ©   (2011-01-27 10:13) [1]

а так?
.Params[XX].AsYYY := ZZ


 
12 ©   (2011-01-27 10:19) [2]

а скрипт на create table какой


 
Jeer ©   (2011-01-27 10:35) [3]


> 12 ©   (27.01.11 10:13) [1]
>
> а так?
> .Params[XX].AsYYY := ZZ


Пробовал, один фиг.
Да скрипт простейший, тестовый, т.к. напоролся на переносе старого приложения с гораздо более сложными таблицами.

СREATE TABLE [dbo].[TMP] (
[ID] [int] NOT NULL ,
[MYNAME] [char] (50) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]


 
DiamondShark ©   (2011-01-27 10:38) [4]

Зачем вы всё ещё тыкаете палочкой в этого мёртвого монстрика?


 
Anatoly Podgoretsky ©   (2011-01-27 10:39) [5]

> Jeer  (27.01.2011 09:54:00)  [0]

Prepared не там


 
asail ©   (2011-01-27 10:44) [6]


> 12 ©   (27.01.11 10:19) [2]
> а скрипт на create table какой

А он тут причем? Вариант с константами же работает.

Я с dbExpress дел не имел давно... Но, помнится, он параметры только с "?" понимает. Или путаю чего?


 
12 ©   (2011-01-27 10:46) [7]


> А он тут причем? Вариант с константами же работает.

логично

а если без prepared?
а если prepared перед exec?


 
Jeer ©   (2011-01-27 10:58) [8]


> DiamondShark ©   (27.01.11 10:38) [4]
>
> Зачем вы всё ещё тыкаете палочкой в этого мёртвого монстрика?
>


Переписывать не охота.


> Anatoly Podgoretsky ©   (27.01.11 10:39) [5]
>
> > Jeer  (27.01.2011 09:54:00)  [0]
>
> Prepared не там


Я даже его вертикально писал - не вышло. :)
Похоже на несовместимость с текущей версией OLEDB, т.к. dbExpress через него работает с MSSQL.


 
Jeer ©   (2011-01-27 11:00) [9]

Насчет Prepared - вот тут:
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SqlExpr_TSQLQuery_ExecSQL.html


 
Anatoly Podgoretsky ©   (2011-01-27 11:05) [10]

> Jeer  (27.01.2011 10:58:08)  [8]

А нет желание убить этого уродика dbExpress?


 
Jeer ©   (2011-01-27 11:16) [11]


> Anatoly Podgoretsky ©   (27.01.11 11:05) [10]
>
> > Jeer  (27.01.2011 10:58:08)  [8]
>
> А нет желание убить этого уродика dbExpress?


Да есть, но придется переписывать старое приложение (которое работало на старых версиям OLEDB-провайдера).
Либо бросить его на фик :)


 
Jeer ©   (2011-01-27 11:59) [12]

В общем, нашел устраивающее решение для затычек

Использование вместо TSQLQuery непосредственные возможности ExecSQL у TSQLConnection и выглядит это так:

   sSQL := "INSERT INTO TMP (ID,MYNAME ) VALUES (:ID,:MY )";
   pars := TParams.Create;
   try
     pars.CreateParam(ftInteger, "ID", ptInput).AsInteger := 999;
     pars.CreateParam(ftString, "MY", ptInput).AsString := "String";
     conSource.Execute(sSQL,pars);
     sdsPLANS.Close;
     sdsPLANS.Open;
   finally
     pars.Free;
   end;

Ну это, понятно, тест.
В реальности будет перебор параметров:
pars[0].AsInteger := 1000;
pars[1].AsString := "String";


 
Плохиш ©   (2011-01-27 12:53) [13]

Почему бы не использовать TSQLDataset и TSQLCommand?


 
Jeer ©   (2011-01-27 15:22) [14]


> Плохиш ©   (27.01.11 12:53) [13]
>
> Почему бы не использовать TSQLDataset и TSQLCommand?


Он недалеко ушел от TSQLQuery :)


 
Плохиш ©   (2011-01-27 16:16) [15]


> Jeer ©   (27.01.11 15:22) [14]
>
>
> > Плохиш ©   (27.01.11 12:53) [13]
> >
> > Почему бы не использовать TSQLDataset и TSQLCommand?
>
>
> Он недалеко ушел от TSQLQuery :)

Странно, у меня таких проблем с параметрами не возникало.

PS. Попробуй перед двоеточиями пробел поставить.


 
Jeer ©   (2011-01-27 17:02) [16]


> PS. Попробуй перед двоеточиями пробел поставить.


Это все уже опробовано, и перед запятыми тоже.
На платформе win2000 srv таких проблем не было, появились на win2003 srv,
вот с чего и канитель.



Страницы: 1 вся ветка

Текущий архив: 2011.05.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
15-1295873780
MonoLife
2011-01-24 15:56
2011.05.08
Открыть URL адрес в папке проводника


2-1295949753
Тимоха111
2011-01-25 13:02
2011.05.08
Захват изображения части окна


3-1258102915
aleks
2009-11-13 12:01
2011.05.08
Нужна ли установка MSSQL на компьютере клиента?


2-1295941539
Godod
2011-01-25 10:45
2011.05.08
Delphi и FilterGraph


15-1294825167
usrg
2011-01-12 12:39
2011.05.08
О чем говориться в Eclipse Public License?