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

Вниз

Возникла непонятная проблема со связкой 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
14-81050
Sound
2002-03-20 02:00
2002.04.25
Срочные вопросы


3-80746
RomanG
2002-04-02 13:16
2002.04.25
ODBC, MS SQL


3-80804
Labert
2002-04-05 10:57
2002.04.25
TBDEDataset.Locate


3-80772
alehan
2002-03-15 18:46
2002.04.25
TDateTimeField.EditMask


3-80799
Марина
2002-04-05 09:11
2002.04.25
Table is busy.User:???





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