Главная страница
    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.058 c
14-1082352021
Романов Р.В.
2004-04-19 09:20
2004.04.11
Support и его уровень


4-1075500637
Alchemist
2004-01-31 01:10
2004.04.11
Чтение текста из консольного окна


1-1079615848
Pa5ha
2004-03-18 16:17
2004.04.11
Возможности синтаксиса и компиляьора.


3-1081751096
_sulent
2004-04-12 10:24
2004.04.11
SQL Server


3-1081942503
Соловьев
2004-04-14 15:35
2004.04.11
Execute statement - error :(





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