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

Вниз

Странное поведение TADOCommand   Найти похожие ветки 

 
Max Zyuzin ©   (2005-12-08 12:52) [0]

Приветствую всех!

Динамически создаю TADOCommand делаю следующий "финт ушами"

WorkADOCommand.CommandText := "update CustPayment set cpPaymDate = :pcpPaymDate, cpPaymNumber = :pcpPaymNumber "+
"where cpCustomer = :pcpCustomer and cpDate = :pcpDate and cpPaymSum = :pcpPaymSum and  cpCustContract = :pcpCustContract "+
" and cp1CDocNum = :pcp1CDocNum and cpCurCode = :pcpCurCode ";
if GetSubstr(curStr,7) = " " then WorkADOCommand.Parameters.ParamByName("pcpPaymNumber").Value := NULL
else WorkADOCommand.Parameters.ParamByName("pcpPaymNumber").Value := StrToInt(GetSubstr(curStr,7));
if GetSubstr(curStr,8) = " " then WorkADOCommand.Parameters.ParamByName("pcpPaymDate").Value := NULL
else WorkADOCommand.Parameters.ParamByName("pcpPaymDate").Value := StrToDate(GetSubstr(curStr,8));

....

WorkADOCommand.Execute(i,NULL);



GetSubstr функция собственного написания.

Так вот вне зависимости от того что присваиваешь параметру pcpPaymDate результат один и тот же… после Execute поле NULL. При парсинге параметру присваивается корректное значение.
Значение полю cpPaymNumber при этом присваивается корректно.

И самое интересное, что если переделать 1-ю строчку на (т.е. просто поменять порядок)

WorkADOCommand.CommandText := "update CustPayment set cpPaymNumber = :pcpPaymNumber, cpPaymDate = :pcpPaymDate "+
То теперь значение в поле с датой присваиваются корректно, а в cpPaymNumber NULL…

В общем как в том стихотворении «стою на асфальте я в лыжи обутый, то ли лыжи не едут, то ли я …»


 
Max Zyuzin ©   (2005-12-08 12:53) [1]

Ой забыл укзать... MSSQL, D7


 
Johnmen ©   (2005-12-08 12:59) [2]

Если тип datetime, то и присваивать надо
WorkADOCommand.Parameters.ParamByName("pcpPaymDate").Value := <<TDateTime Value>>;


 
Плохиш ©   (2005-12-08 13:01) [3]


> WorkADOCommand.Execute([i,NULL]);


 
Плохиш ©   (2005-12-08 13:02) [4]


> Johnmen ©   (08.12.05 12:59) [2]
> Если тип datetime, то и присваивать надо
> WorkADOCommand.Parameters.ParamByName("pcpPaymDate").Value
> := <<TDateTime Value>>;

Есть подозрение, что он вообще Parameters не использует


 
Max Zyuzin ©   (2005-12-08 13:10) [5]

>Плохиш ©   (08.12.05 13:01) [3]
Да, если сделать просто WorkADOCommand.Execute;
То все присваивается, мне хочется узнать сколько записей обработано, для этого и пытаюсь сделать WorkADOCommand.Execute(i,NULL)
Почитал хелп по Execute нашел что парметры типа OleVariant и все. без объяснения что же за параметры выполнения.

>Плохиш ©   (08.12.05 13:02) [4]
Подозрение верно... в морг? ;)


 
msguns ©   (2005-12-08 13:11) [6]

>Johnmen ©   (08.12.05 12:59) [2]
>Если тип datetime, то и присваивать надо
>WorkADOCommand.Parameters.ParamByName("pcpPaymDate").Value := <<TDateTime Value>>;

В ADO "катят" и "строчные" даты (и не только даты).


 
Johnmen ©   (2005-12-08 13:13) [7]

>msguns ©   (08.12.05 13:11) [6]

Серёга, если что-то катит, то это не значит, что только так и нужно катить...
:)


 
Max Zyuzin ©   (2005-12-08 13:17) [8]

>Johnmen ©   (08.12.05 13:13) [7]
Женя & Сергей, чего вы решили что я присваиваю строку этому параметру? Там вроде стоит явное преобразование StrToDate... Что возвращает TDateTime


 
Плохиш ©   (2005-12-08 13:19) [9]


> Max Zyuzin ©   (08.12.05 13:10) [5]

О, блин, только заметил, что в том так красиво отформатированном коде, параметры написаны.
Тогда возникает вопрос, какой смысл вложен в WorkADOCommand.Execute(i,NULL);?


 
msguns ©   (2005-12-08 13:30) [10]

>Плохиш ©   (08.12.05 13:19) [9]
>Тогда возникает вопрос, какой смысл вложен в WorkADOCommand.Execute(i,NULL);?

см. [5]. Хотя самому интересно ;)


 
Max Zyuzin ©   (2005-12-08 13:30) [11]

>Плохиш ©   (08.12.05 13:19) [9]
мне хочется узнать сколько записей обработано


 
Johnmen ©   (2005-12-08 13:41) [12]

>Max Zyuzin ©

Максим, я не поленился нажать F1 на TADOCommand и Using TADOCommand.
Там всё так понятно написано...:)


 
Desdechado ©   (2005-12-08 13:41) [13]

Зачем так сложно с самописными функциями? Можно ведь:

ParamCheck := True;
CommandText := ...
oParam := Params.FindParam( "P_Type" );
if( oParam <> nil ) then
 oParam.Value := ...

или я что-то не понял?


 
msguns ©   (2005-12-08 13:49) [14]

>Johnmen ©   (08.12.05 13:13) [7]
>Серёга, если что-то катит, то это не значит, что только так и нужно катить...

Жэка, не умничай
 ;)


 
Johnmen ©   (2005-12-08 13:59) [15]


> msguns ©   (08.12.05 13:49) [14]
> Жэка, не умничай
>  ;)


Я только чуть-чуть :)
Есть у меня такая слабость...


 
Max Zyuzin ©   (2005-12-08 14:14) [16]

В обчем вниматеьно перечитал, понял за параметры имелись ввиду в Execute. Вот только вопрос неужто токо таким "кривым" способом можно вытащить количество обработаных строк?


 
Johnmen ©   (2005-12-08 14:19) [17]

>Max Zyuzin ©   (08.12.05 14:14) [16]

Ну почему же этот метод кривой? Совсем нет. Притом "быстрый", о чём также говорится в хелпе.


 
Max Zyuzin ©   (2005-12-08 14:28) [18]

>Johnmen ©   (08.12.05 14:19) [17]
На мой взгляд мене очевидный, проще запутаться... ибо важен порядок значений параметров.


 
Johnmen ©   (2005-12-08 14:29) [19]

>Max Zyuzin ©   (08.12.05 14:28) [18]
>ибо важен порядок значений параметров.

Это да :)



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

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

Наверх





Память: 0.49 MB
Время: 0.012 c
11-1118404589
vitge
2005-06-10 15:56
2006.02.05
Работа KOL под PALM


2-1137666070
olevacho_
2006-01-19 13:21
2006.02.05
Автоматическое переключение языка


15-1137271695
Гарри Поттер
2006-01-14 23:48
2006.02.05
Админский софт для комп. клуба инет-кафе


11-1118243553
Владимир Кладов
2005-06-08 19:12
2006.02.05
Смешивание звуков


2-1137495060
ilya39
2006-01-17 13:51
2006.02.05
ColumnHeader в FCL





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