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

Вниз

Сбрасывается типа параметра в TADOQuery с ftWideString -> ftStrin   Найти похожие ветки 

 
Rauf ©   (2004-03-13 01:48) [0]

Есть TADOQuery
Каждый раз при использовании, так скажем при каждом прокате,
я сохраняю имеющийся текст запроса, а в конце восстанавливаю
Вот код

var AStr : String;

begin
   AStr := a_q.SQL.Text;
   a_q.SQL.Text := "select * from table1 where name = :name";
   a_q.Parameters.ParamValues[ "name" ] := "<some_str>";
   a_q.Open();
   a_q.First();
   // ...................
   a_q.Close();
   a_q.SQL.Text := AStr;
end;

Сам параметр создаю заранее, тип ftWideString.

Так вот при первом проходе все ОК, а при втором эксепшн: в общей сложности из-за того что набор данных пустой (точно, проверял через IsEmpty).

В общем проверил, оказывается тип параметра после первого прохода постоянно сбрасывается (короче это тоже проверял, параметр там не ftWideString). После этого я начал задавать тип параметра name в ftWideString и все ОК.

Как мне не терять тип параметра???

P.S. Под конец проверил. У меня тип параметра должен быть ftWideString, а он сбравсывается в ftString. Вот зараза!!!


 
ЮЮ ©   (2004-03-13 02:30) [1]

>Как мне не терять тип параметра???

1) задавать явно (что ты и делал), т.к. при изменении a_q.SQL.Text параметры пересоздаются

2) запоминать(и восстанавливать) не только a_q.SQL.Text, но и a_q.Parameters

И вообще, IMHO, на кой трогать этот Query, если он действтьельно затем ещё раз используется? Не проще так:

var a_q : TAdoQuery;

begin
 a_q := TAdoQuery.Create(nil);
 try    
   a_q.Connection := ...;
   a_q.SQL.Text := "select * from table1 where name = :name";
   a_g.Parameters.Items[0].Value := "<some_str>";
   a_q.Open();
   // ...................
 finally
   a_q.Free;
 end;


 
sniknik ©   (2004-03-13 18:27) [2]

ааа..., значит и с TADOQuery в параметрах проблемы... ;о))
почитай по предыдущему
http://delphimaster.net/view/3-1078829501/
выводы

и лутше задавай явно всегда не надейся на установленое в десигд тайме (хотя иногда это работает, но получается что ненадежно)
так
a_q.Parameters[0].Value:= Name.Text;
a_q.Parameters[0].DataType:= ftWideString;
или
a_q.Parameters.ParamByName("name").Value:= Name.Text;
a_q.Parameters.ParamByName("name").DataType:= ftWideString;


 
Johnmen ©   (2004-03-14 01:47) [3]

>sniknik ©  (13.03.04 18:27) [2]

Наверное, сначала тип, потом значение...


 
sniknik ©   (2004-03-14 12:55) [4]

Johnmen ©   (14.03.04 01:47) [3]
да так правильнее, просто этот код из тестов, там изначально стоит ftWideString но после теряется, (см. по ссылке, там долго разбирался) в этом случае все равно.



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

Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
7-1075489491
kolpin
2004-01-30 22:04
2004.04.11
Запись файлов и папок на CD-RW


14-1079898622
Soft
2004-03-21 22:50
2004.04.11
Мобильные телефоны не убивают людей, но повреждают мозг!!!


1-1080199485
Larry
2004-03-25 10:24
2004.04.11
StatusBar


6-1079546565
kondryuk
2004-03-17 21:02
2004.04.11
OnGetThread


6-1079427087
Ozone
2004-03-16 11:51
2004.04.11
Не соединяется





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский