[ saladinche @ 02.12.2017. 07:39 ] @
Pozdrav drugari,
Pokusavam da napravim u delphiju akciju koja ce mi upisivati vrednosti u Bazu iz komponenata koo sto je Edit.
Tip podatka u bazu je Integer a evo query kako ja pokusavam:

QDataSet.Active:= false;
QDataSet.SQLs.InsertSQL.Text:= 'Insert into Ugovori (broj_ugovora) VALUES (:broj_ugovora)';
QDataSet.Prepare;
QDataSet.Params[0].Value:= StrToInt(Edit1.Text);
Qugovori.Active:= true;

Ovde dobijam gresku XSQLDS index out of range.

Pokusavam sam i pomocu pFIBScripter sa textom:

pFIBScripter1.Script.Text := 'INSERT INTO UGOVORI (BROJ_UGOVORA) VALUES (111)';
pFIBScripter1.ExecuteScript;

Ovde ne izbaci nikakvu gresku ali se nista ne desi.

Hvala.
[ captPicard @ 02.12.2017. 10:17 ] @
Za insert i update koristi pFIBQuery of FIBPlusa.

Code (delphi):
with qryNapravi do
begin
  close;
  sql.Text := 'insert into ugovori (nesto) values (:param)';
  params[0].AsString := strNekaVarijabla;
  executeQuery;
end;


i ne zaboravi comittati kada završiš.
[ saladinche @ 02.12.2017. 14:01 ] @
Delimicno reseno.
Uradio sam pomocu ovog coda ovde, mada sam imao jos jednu gresku;
Na formi nisam koristioi Query vec fibDataSet koji ima slicne opcije kao Query ali posto nisam ranije koristio paket FibPlus nisam ni znao da to ima.
U glavnom kada sam iskonfigurisao TpFibQuery proradilo je, ali sada imam jos jedan drugi problem.

Sada mi sve uradi kako treba, i sve mi podatke lepo izlista u BDGrid-u ali problem nastaje kada izadjem iz programa i opet udjem. Tu vidim da ih u opste nije upisao u bazu.
Isto se desava kada direktno otvorim bazu i vidim da nema novih unosa.

To je trenutni problem :(


Citat:
captPicard: Za insert i update koristi pFIBQuery of FIBPlusa.

Code (delphi):
with qryNapravi do
begin
  close;
  sql.Text := 'insert into ugovori (nesto) values (:param)';
  params[0].AsString := strNekaVarijabla;
  executeQuery;
end;


i ne zaboravi comittati kada završiš.
[ savkic @ 02.12.2017. 14:41 ] @
> Sada mi sve uradi kako treba, i sve mi podatke lepo izlista u BDGrid-u ali problem nastaje kada
> izadjem iz programa i opet udjem. Tu vidim da ih u opste nije upisao u bazu. Isto se desava kada
> direktno otvorim bazu i vidim da nema novih unosa.

Verovatno si upoznat sa konceptom transakcija u kontekstu RDBSa, ti uradis izmenu (insert/update) i ona po defaultu ostaje vidljiva samo toj transakciji u okviru koje je i uradjena, kada izadjes iz programa ili udjes direktno u bazu ti koristis neku drugu transakciju koja te podatke ne vidi.

Resenje je da prvu transakciju (ona koja radi izmene) commitujes. Manje vise sve Delphi komponente za rad sa bazom dozvoljavaju automatski handling transakcija ali i rucni, ti verovatno koristis automatski pa stoga nemas tacnu kontrolu nad celim procesom, moja preporuka je da predjes na rucni. Ne poznajem te TpFibXXX komponente pa ti ne mogu tacno reci kako se to radi, otprilike je ovako:

Code:

  qryNapravi.Transaction.StartTransaction;
  qryNapravi.Sql.Text := 'insert into ugovori (nesto) values (:param)';
  qryNapravi.params[0].AsString := strNekaVarijabla;
  qryNapravi.executeQuery;
  qryNapravi.Transaction.Commit;


Dakle blok u kome radis izmenu treba da ubacis izmedju StartTransaction i Commit.
[ saladinche @ 02.12.2017. 19:15 ] @
Uradio sam i sve lepo redi :)
Puno hvala :)