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

Вниз

Есть разница м/у Open и ExecSQL в ADOQuery?   Найти похожие ветки 

 
Boo   (2002-03-28 17:21) [0]

Есть MSSQL2000, MDAC2.7 (пробовал и с другими версиями).

Делаю связку:

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("select id, text from Table1");
ADOQuery1.Open;
DataSource1.DataSet:=ADOQuery1;
ADOQuery2.DataSource:=DataSource1;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add("Update Table1 set text="dsgvd" where id=:id");
ADOQuery2.Prepared:=True;
ADOQuery2.ExecSQL;


Дык вот. В параметр ADOQuery.Parameters[0] почему-то выдается [null] и следовательно ничего не изменяется (id - уникальное поле), т. е. значение параметра автоматом не присвается
Но! Если вместо ADOQuery2.ExecSQL; поставить ADOQuery2.Open, то прога ругается (некуда поставить курсор), но изменения в базе происходят (параметр id принимает зависимое значение)
К чему-бы енто? (и желательно - как лечится :-))


 
Aleksandr   (2002-03-28 17:29) [1]

Гы... параметры всегда ручками ставятся... Енто Борланд знает, что вместо :id надо подставить параметр из списка параметров, а Transact-SQL на энто до фени...
Всего лишь одна строчка:
ADOQuery2.Parameters.ParamByName("ID").Value:=...



 
Boo   (2002-03-28 17:40) [2]

Да нее... Компилятор сам создает конструкцию, которая при работе программы подставляет вместо :id - значение из ADOQuery1 (стандартная связка), только вот почему с такими параметрами Open и ExecSQL работают совершенно по-разному - ХЗ
:-)


 
aus   (2002-03-28 18:48) [3]

Вроде бы должен знать компилятор, только почему-то не всегда делает то, что нужно. Вручную надежнее.
А разницу посмотри в исходниках.


 
Shaman_Naydak   (2002-03-28 20:26) [4]

Да.. тут еще есть баги..
ты кстати ADOUpdate провесил ?

У меня тоже была такая фишка..
Вызывалась хранимая,возвращающая recordset (хранимая тоже хитрая, но не в ней дело)
Мне нужно было получить _Recordset.
Я сперва как всегда использовал
MyRecordset:=ADOCommand1.Execute;
И при присвоении его потом ADODataset2.Recordset:=MyRecordset
все вставало раком..
переписал первое как (использовал TADODataset вместо TADOCOmmand)
ADODataset1.Open; MyRecordset:=ADODaatset1.Recordset;
И все заработало.. разница там, что в случае Dataset"а сперва создается _Recordset, инициализируется как-то хитро, а потом вызывается _Command..
Короче,и у ADO и у борланда еще не все в порядке в этом месте
(причем, по моему, у ADO намного больше не в порядке)


 
Boo   (2002-03-28 21:32) [5]

> Shaman_Naydak
У Борланда (BDE+ODBC) я видел всего 2 траблы:
1) дебильная настройка (sorry) - ODBC, потом BDE
2) при некоторых драйверах ODBC для MSSQL recordcount из принципа выдает -1, при других - string-и режутся до 250 символов

Вот и решил перейти на ADO (простота настройки - одна строка + нормальная работа с длинными строками в база), дык нет - трабла с параметрами для ExecSQL.
Кстати нашел разницу м/у Open и ExecSQL:
Open - метод TDataSet
ExecSQL - метод TADOQuery, который работает через Execute
но вот куда деваются параметры (из DataSource) - ХЗ
:-)



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

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

Наверх





Память: 0.45 MB
Время: 0.006 c
1-57709
mike.dld
2002-04-06 00:22
2002.04.18
Delphi4 vs Delphi6


3-57592
Morgan
2002-03-26 15:52
2002.04.18
Индексация Парадокс 7.0


1-57669
Stexen
2002-04-05 22:33
2002.04.18
ФАЙЛЫ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


14-57844
KvORubin
2002-03-07 15:40
2002.04.18
Просчёт ВРЕМЕНИ затраченного на интернет !!!


3-57635
yuricom
2002-03-28 08:06
2002.04.18
Справочники, как определить свободна ли запись?





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