Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.05.08;
Скачать: [xml.tar.bz2];

Вниз

Проблема парсинга 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
2-1295941539
Godod
2011-01-25 10:45
2011.05.08
Delphi и FilterGraph


2-1296648381
NieL
2011-02-02 15:06
2011.05.08
Сформировать список


15-1295731785
Юрий
2011-01-23 00:29
2011.05.08
С днем рождения ! 23 января 2011 воскресенье


2-1296736634
zlodey
2011-02-03 15:37
2011.05.08
непонятная ошибка


15-1293694941
Kerk
2010-12-30 10:42
2011.05.08
С новым годом!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский