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

Вниз

Возникла непонятная проблема со связкой IBQuery + IBUpdateSQL   Найти похожие ветки 

 
Lt. Dennis   (2002-04-03 16:46) [0]

Есть тут проблемы..
Может кто поможет?

Возникла непонятная проблема со связкой IBQuery + IBUpdateSQL.
(редактируемый запрос)
В свойстве ModifySQL компонента IBUpdateSQL прописываем:



UPDATE NEW_TABLE
SET L2=:L2, L3=:L3
WHERE
L2=:OLD_L2

При подтверждении изменений возникает ошибка:
"EInterBaseError with Message: UPDATE FAILED".
Не могу найти причину этому.

Если у кого есть примеры работы IBQuery + IBUpdateSQL
пришлите пожайлуста сюда: lt_dennis@moldova.cc

Постараюсь как можно более подробней...

Часть файла формы (*.dfm)

object IBUpdateSQL1: TIBUpdateSQL
RefreshSQL.Strings = (
"Select "
" L2,"
" L3"
"from new_table "
"where"
" L2 = :L2")
ModifySQL.Strings = (
"update new_table"
"set"
" L2 = :L2,"
" L3 = :L3"
"where"
" L2 = :OLD_L2")
InsertSQL.Strings = (
"insert into new_table"
" (L2, L3)"
"values"
" (:L2, :L3)")
DeleteSQL.Strings = (
"delete from new_table"
"where"
" L2 = :OLD_L2")
Left = 264
Top = 16
end
object IBQuery1: TIBQuery
Database = IBDatabase1
Transaction = IBTransaction1
AfterInsert = IBQuery1AfterInsert
BeforeDelete = IBQuery1BeforeDelete
BeforeEdit = IBQuery1BeforeEdit
BeforePost = IBQuery1BeforePost
CachedUpdates = True
SQL.Strings = (
"select L2,L3 from NEW_TABLE")
UpdateObject = IBUpdateSQL1
Left = 96
Top = 32
end
object DataSource1: TDataSource
DataSet = IBQuery1
Left = 368
Top = 168
end


Таблица New_Table:

L2 VARCHAR(100),
L3 FLOAT

Фрагмент исходника:
implementation
uses IB;
{$R *.DFM}
var Data:String;

procedure TForm1.Button1Click(Sender: TObject);
begin
IBQuery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
IBQuery1.Close;
end;

procedure TForm1.IBQuery1AfterInsert(DataSet: TDataSet);
begin
IBUpdateSQL1.SetParams(ukInsert);
end;

procedure TForm1.IBQuery1BeforeDelete(DataSet: TDataSet);
begin
IBUpdateSQL1.SetParams(ukDelete);
end;

procedure TForm1.IBQuery1BeforePost(DataSet: TDataSet);
begin
try
//IBUpdateSQL1.SetParams(ukModify);
//IBUpdateSQL1.Query[ukModify].Close;
//IBUpdateSQL1.Query[ukModify].ParamByName("L2").AsString:=IBQuery1.FieldByName("L2").AsString;
//IBUpdateSQL1.Query[ukModify].ParamByName("L3").AsFloat:=IBQuery1.FieldByName("L3").AsFloat;
//IBUpdateSQL1.Query[ukModify].Prepare;
//IBTransaction2.StartTransaction;
//IBUpdateSQL1.Apply(ukModify);
//IBUpdateSQL1.Query[ukModify].Open;
//IBTransaction2.Commit;
//IBUpdateSQL1.Query[ukModify].Close;


except
on Er:EIBInterBaseError do
ShowMessage(IntToStr(Er.SQLCode));
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if IBQuery1.Active
then IBQuery1.ApplyUpdates;
end;

procedure TForm1.IBQuery1BeforeEdit(DataSet: TDataSet);
begin
Data:=IBQuery1.FieldByName("L2").AsString;
end;

end.


 
Fareader ©   (2002-04-03 18:54) [1]

А где ошибка вылезает? Если здесь procedure TForm1.Button3Click,
то проверка на то, что в кеше чго-то есть надо ставить:

if IBQuery1.updatesPending then IBQuery1.ApplyUpdates

А что сие означает
Data:=IBQuery1.FieldByName("L2").AsString;

Отследи пошагово код и напиши какую ошибку в дельфях сгенерирует.



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

Текущий архив: 2002.04.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-80912
@andrew
2002-04-15 12:49
2002.04.25
ПРИВЕТ ВСЕМ! Хочу распечатать Канвас...


1-80902
Кулюкин Олег
2002-04-15 09:12
2002.04.25
ручная отрисовка ListView, проблемма при изменении ширины столбца


3-80737
Buh
2002-04-06 12:27
2002.04.25
Как вставить запись в таблицу.dbf из таблицы другой базы данных п


1-80871
Rammst
2002-04-13 10:29
2002.04.25
Закрытие программ


14-81052
Наивный
2002-03-18 22:52
2002.04.25
Пожалуйста помогите или дайте совет по этой теме!