Nie mogę nic zmienić w bazie Firebird

0

Dobra, przerzuciłem już cały program na komponenty InterBase.
Mam jakąś formę obok głównej, na której mam TIBDatabase, do tego podpięty TIBTransaction.

Następnie do komponentów TIBQuery przyrównuję:

IBQuery.Database:=Main.Database;

Dane pokazuje. OK.
ALe w momencie zrobienia IBQuery.Edit wyskakuje mi komunikat, że dataSet jest ReadOnly. Nie mam zielonego pojęcia, co zrobić, żeby móc dodać/modyfikować jakiś rekord.

Właściwość Params TIBTransaction wygląda tak:

write
consistency
0

Musisz bazę wprawić w stan edycji.

W OnCreate lub jakimś buttonie:

  IBQuery1.Connected := True;
  IBQuery1.Open;

W czasie pisania programu powinieneś mieć wszędzie Active na False ustawione.
Powinno pomóc. :)

0
RedbaK napisał(a)

Musisz bazę wprawić w stan edycji.

W OnCreate lub jakimś buttonie:

  IBQuery1.Connected := True;
  IBQuery1.Open;

W czasie pisania programu powinieneś mieć wszędzie Active na False ustawione.
Powinno pomóc. :)

IBQuery nie ma czegoś takiego jak Connected.
Natomiast TIBDatabase ma ustawione connected na true i nic.

0

Sorry tam się wkradł błąd.
Oczywiście chodziło o IBDatabase.

Wysłałem ci źródło przykładowej bazki na [email protected] (z Firebird) z dodawaniem rekordu. Popatrz jak tam jest poustawiane wszystko.
Jak jest odczytywana baza przy starcie itd.
Mam nadzieję, że teraz zakumasz :)

Załącznik zajmuje ok 0,9Mb.

===Dopisane===

Tam masz od razu pokazane jak wyświetlić zawartość bazy za pomocą SQL.

0
RedbaK napisał(a)

Sorry tam się wkradł błąd.
Oczywiście chodziło o IBTransaction.

dużo masz tych błędów - IBTransaction też nie ma Connected. Najpierw się dowiedz coś o tym o czm chcesz pisać

Juhas napisał(a)

Właściwość Params TIBTransaction wygląda tak:

write
consistency

Lepiej dać

read_committed
rec_version
nowait

czyli ustawić Read Commited

Juhas napisał(a)

ALe w momencie zrobienia IBQuery.Edit wyskakuje mi komunikat, że dataSet jest ReadOnly. Nie mam zielonego pojęcia, co zrobić, żeby móc dodać/modyfikować jakiś rekord.

pod to Query podepnij IBUpdateSQL lub zastąp je przez IBDataSet

0

pod to Query podepnij IBUpdateSQL lub zastąp je przez IBDataSet

Zastąpiłem, ale nic nie dało.

[dopisane]

Zaraz, zauważyłem pewną różnicę z tym, co ja piszę, a z tym, jak napisał Misiekd.

Ja po prostu próbuję dać:

IBQuery.Edit; //lub append
...
IBQuery.Post;

(wywala się na edit/append).
Czyli, że nie mogę tego zrobić tą kulturalną metodą, tylko wszystko muszę sqlem?

0

możesz, tylko pomyśleć też trzeba
Jak zastąpiłeś IBQuery rzez IBDataSet to w IBDataSet jest jeszcze coś takiego jak UpdateSQL, DeleteSQL, InsertSQL i RefreshSQL, które trzeba uzupełnić

1 użytkowników online, w tym zalogowanych: 0, gości: 1