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

Вниз

Сбрасывается типа параметра в 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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.041 c
6-1079099155
girich
2004-03-12 16:45
2004.04.11
Удален. машина как залогинится, есть физич. канал связи


14-1079187844
Alex30
2004-03-13 17:24
2004.04.11
Может кто знает как инет файлы на ящик себе отсылать?


1-1080214459
EvgeniyR
2004-03-25 14:34
2004.04.11
MDI


8-1072194231
Kein
2003-12-23 18:43
2004.04.11
Описание графических форматов


6-1079792117
Ihor
2004-03-20 17:15
2004.04.11
Delphi&amp;LAN





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