Delphi,ZeosLib,MySQL nem folyamatos kapcsolat
2005-11-16T10:11:01+01:00
2005-11-17T11:12:32+01:00
2022-07-24T06:43:02+02:00
_thomas_
sziasztok!

delphi 7 enterprise,zeoslib 6.5.1 alpha és mysql 4.1 -et használok. az a problémám, hogy online kapcsolat szükséges ahhoz hogy a dbgrid meg tudja jeleníteni a rekordokat. ez persze rendben is van de én azt akarom, hogy csak akkor legyen kapcsolat amikor valamit lekérdezek,módosítok a mysql rekordjain. biztos nagyon egyszerű a megoldás de kezdő vagyok adatbázis kezelés terén és ezért fordulok hozzátok. átnéztem jópár topicokt ami mysql+delphi+zeoslib de nem találtam meg a megoldást,bár lehet én voltam a figyelmetlen!
tehát összefoglalva ezt szeretném:
a program induláskor nem létesít kapcsolatot a mysql szerverrel. egy gombra kattintva csinálok egy lekérdezést ezt egy dbgridbe teszem majd bontom a kapcsolatot. ezt meg is tudom valósítani csakhogy a kapcsolat bontása után elszáll a dbgrid tartalma. na ezt kellene valahogy megakadályozni.

segítségetek előre is köszönöm!
_thomas_
Mutasd a teljes hozzászólást!
procedure ize; var i, j: integer; begin // kapcsolat felépítése a szerverrel... StringGrid1.ColCount := ZQuery.FieldCount; StringGrid1.RowCount := ZQuery.RecordCount; ZQuery.Open; ZQuery.First; i := 0; while not ZQuery.Eof do begin for j := 0 to ZQuery.FieldCount - 1 do StringGrid1.Cells[j,i] := ZQuery.Fields[j].AsString; ZQuery.Next; Inc( i ); end; ZQuery.Close; // kapcsolat bontása a szerverrel... end;

Kb... lehet, hogy kicsit finomítani kell, most nem tudom lefuttatni...
Mutasd a teljes hozzászólást!

  • Ne DBGridet használj, hanem a megnyitott lekérdezés eredményét StringGrid-be másold bele...
    Mutasd a teljes hozzászólást!
  • értem!
    ööö..tudnál adni egy kódrészletet hogy a ZQuery értékét hogyan tudom a legegyszerűbben a StringGridnek átadni?
    ígérem Tiéd lesz a pont:)
    Mutasd a teljes hozzászólást!
  • procedure ize; var i, j: integer; begin // kapcsolat felépítése a szerverrel... StringGrid1.ColCount := ZQuery.FieldCount; StringGrid1.RowCount := ZQuery.RecordCount; ZQuery.Open; ZQuery.First; i := 0; while not ZQuery.Eof do begin for j := 0 to ZQuery.FieldCount - 1 do StringGrid1.Cells[j,i] := ZQuery.Fields[j].AsString; ZQuery.Next; Inc( i ); end; ZQuery.Close; // kapcsolat bontása a szerverrel... end;

    Kb... lehet, hogy kicsit finomítani kell, most nem tudom lefuttatni...
    Mutasd a teljes hozzászólást!
  • Használj ClientDataset-et, és azt kapcsold a dbGrid-hez.

    Kell hozzá a ClientDataset, DatasetProvider valamint a ZQuery vagy ZReadOnlyQuery.

    ClientDataset.ProviderName := DatasetProvider
    és
    DatasetProvider.Dataset := Zquery

    Zquery.open; Clientdataset.active := true; Zquery.close;

    adatok újraolvasása/ frissítése
    Zquery.open; Clientdataset.CancelUpdates; // ha módosítva lett visszavonjuk Clientdataset.active := false; clientdataset.active := true; Zquery.close;


    Mutasd a teljes hozzászólást!
abcd