![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oracle: редактирование таблицы [D6]
SRom © (2003-08-22 11:20:00)
Подскажите, Как с помощью переменной типа TOracleDataSet и метода SetVariable загнать значение в определенную таблицу.
Если можно, дайте фрагмент программного кода. Для определенности будем считать, что таблица называется MyTable и в ней определена колонка DATE. Заранее спасибо. Мы пытаемся сделать это так:
OracleDataSet.SQL.Clear;
strsql1:="select * from MyTable";
OracleDataSet.SQL.Add(strsql1);
//OracleDataSet.open;
y:=OleObj.DscSaleDate;
OracleDataSet.SetVariable(":DATE",y);
OracleDataSet.SQL.Clear;
strsql1:="commit";
OracleDataSet.SQL.Add(strsql1);
OracleDataSet.ExecSQL;
вылетает в последней строке.
Vlad (2003-08-22 12:22:00) [1]
Не за что, заходите еще :-)
SRom (2003-08-22 12:19:00) [2]
Спасибо! Получилось.
Vlad (2003-08-22 12:15:00) [3]
Вот это НЕ НАДО !!!
>> OracleQuery.sql.Text := "Commit";
>> ShowMessage(OracleQuery.SQL.text);
>> OracleQuery.Execute;
В конце поставь на всяк случай OracleSession.Commit;
a_andru (2003-08-22 12:10:00) [4]
from SRom to Vlad :
OracleQuery.SQL.Add("insert into andru.discount VALUES(: DATE,:BARCODE,:TOTAL_SUM,:RATE)");
ShowMessage(OracleQuery.SQL.text);
y:=OleObj.DscSaleDate;
b:=OleObj.DscSaleBarcode;
ts:=OleObj.DscSaleTotal;
r:=1;
OracleQuery.SetVariable("DATE",y);
OracleQuery.SetVariable("BARCODE",b);
OracleQuery.SetVariable("total_sum",ts);
OracleQuery.SetVariable("Rate",r);
OracleQuery.Execute;
OracleQuery.sql.Text := "Commit";
ShowMessage(OracleQuery.SQL.text);
OracleQuery.Execute;
Vlad (2003-08-22 12:04:00) [5]
2 SRom (22.08.03 11:59) [9]
приведи код. Как ты это делаешь ?
Я тебе просто пример написал.
DeclareVariables и SetVariables нужно делать для всех переменных запроса.
SRom (2003-08-22 11:59:00) [6]
2Vlad
Попробовал. Выполняется и не вылетает, только содержимое таблицы не меняется. Чего не хватает?
Johnmen (2003-08-22 11:57:00) [7]
>Vlad © (22.08.03 11:49) [7]
Э-э-э-э...
Ты путаешь выполнение настоящей SQL команды и анонимного begin блока. :)
Vlad (2003-08-22 11:49:00) [8]
допустим я сказал.
query.sql.text:="begin commit; end;"
И вперед.
Другое дело, что это тоже самое, что почесать левой нагой за правым ухом.
Johnmen (2003-08-22 11:43:00) [9]
>Vlad © (22.08.03 11:39) [5]
>Есть такая PL-SQL комманда - commit
Кто сказал, что в ЗАПРОСАХ можно использовать PL-SQL комманды ? :)))))
Vlad (2003-08-22 11:39:00) [10]
Ребяты, кажется у вас полное непонимание дела.
"Загнать" в таблицу можно с помощью TOracleQuery;
OracleQuery.SQL.Clear;
OracleQuery.SQL.Add("INSERT INTO MYTABLE VALUES (:DATE,.... и все поля таблицы)");
OracleQuery.DeclareVariable("DATE",ftDate);
OracleQuery.SetVariable("DATE",MyDate);
OracleQuery.ExcecSql;
2 Johnmen © (22.08.03 11:37) [4]
Есть такая PL-SQL комманда - commit
Sergey13 (2003-08-22 11:37:00) [11]
2SRom (22.08.03 11:20)
> Мы пытаемся сделать это так:
Долго пытаетесь? 8-)
Я так понял это DOA? Метод SetVariable не предназначен для "загоняния" значений в таблицу. Им "загоняют" значение переменной в запрос. Читайте доки - они рулез. 8-)
Johnmen (2003-08-22 11:37:00) [12]
Конечно вылетит. Нет такой SQL команды "commit".
Наверное, стОит посмотреть метод Commit соответствующего компонента (...DataBase, ...Transaction).
roottim (2003-08-22 11:35:00) [13]
даже отвечать нехочется :(, как-то грусно все это...
a_andru (2003-08-22 11:27:00) [14]
Даже не знаю чем помочь