Delphi 7 + ZeOS lib + FireBird 1.5

Delphi 7 + ZeOS lib + FireBird 1.5
2005-11-18T15:37:01+01:00
2005-11-27T10:53:35+01:00
2022-10-27T21:45:43+02:00
Rhade
Sziasztok. Nagy segítség kellene.

Szeretném használni Delphi 7 alatt a ZeOS libet. Adatbáziskezelő a FireBird 1.5 lenne. Eddig adatbázist a BDE-n keresztül használtam, de most szakdolgozathoz ez kevés. Meg tulajdonképpen az SQL miatt is kellene, és nem akarom a BDE-t külön felrakni a célgépre, elég lenne a FireBird is. No most ha lenne vki aki leírná hogy kell a FireBirdnek az adatbázist beállítani, hogy kell a Delphi alatt a ZeOS componenseket használni. Milyen beállítások kellenek. Azért fordulok ide mert sehol sem találtam rendes leírást a neten, még itt sem. Sajnos amiket találtam, azok már komolyabb problémákat feszegetnek, de senki sem foglalkozik a kezdő beállításokkal. Gondolom aki már nagyon benne van a témában, annak ez a pár sor leírás nem jelenthet komoly gondot. Segítségeteket előre is köszönöm.
Mutasd a teljes hozzászólást!
Hali!

Nem néztem meg rendesen, bocs. Ha paramétert akarsz, akkor:
SQL.Add('INSERT INTO MY_TABLE (FIELD1,FIELD2)')
SQL.Add('VALUES (:PARAM1,:PARAM2)');

Vagyis kettőspöttyel tudsz paramétert definiálni és akkor hozza létre a paraméterobjektumokat a komponens.

Szóval a Te esetedben:

Sql.Add('INSERT into ENAR (ENARKOD, ENARSORSZ) '); Sql.Add('VALUES (:ekod,:esor)'); Parambyname('ekod').Value:=Edit1.Text; Parambyname('esor').Value:=Edit2.Text;

Üdv:Alex
Mutasd a teljes hozzászólást!

  • Valamikor Lazarus alatt játszottam Zeos-szal, inkább SQLite alatt.
    A következőket kell tenni:
    1. Dobj egy ZConnection-t a formra, a protocol Firebird-1.5, a database az adatbázishod helye, a username sysdba a jelszó masterkey, a loginpromt false.
    2. Dobj egy ZQuery-t a formra, a connection az előző ZConnection, az SQL az SQL mondat amit le akarsz kérdezni, Pl. select * from tabla.
    3. Dobj fel egy ZUpdateSQL-t is a formra, töltsd ki a DeleteSQL, ModifySQL, InsertSQL propertyket, valahogy így:
    delete from tabla where id=:OLD_id
    insert into tabla(id,txt) values (:id,:txt)
    update tabla set id=:id, txt=:txt where id=:OLD_id
    4. A ZQuery updateobject legyen az előző ZUpdateSQL.
    5. Dobj fel egy DataSource-t, állítsd a datasetet a ZQeryre.
    6. Tegyél fel egy datagridet és állíst a datasource-t az 5. pontban beállítottra.

    Kb. ennyi amit ez ügyben mondani tudok, remélem segít valamit...

    Ps. Az ilyet legközelebb a tudástárban kérdezd meg, hogy ha valaki legközelebb érdeklődik ilyesmi iránt akkor ő is megtalálja.
    Mutasd a teljes hozzászólást!
  • A ZEOS-szal - emlékezetem szerint - nem bírtuk megszeretni egymást. Igaz, nem InterBase (FireBird) hanem PostgreSQL volt az adatbáziskezelő. FireBird (InteBase) eléréséhez az IBX-et használom évek óta Delhi5 (IBX 5.04) és Delphi7 (IBX 7.08). Megvannak a BDE-s megfelelői is, de van tucatnyi egyéb szp dolog és teljes DB adminisztráció is.
    Mutasd a teljes hozzászólást!
  • Köszi LC! Ilyenre gondoltam. Már csak azt nem értem, hogy Delphi oldalról megvan az adatbázis kapcsolat, már csak az lenne a kérdésem, hogy a FireBird server honnan fogja tudni, hogy én melyik adatbázist akarom használni. Vagy azt adná át neki a ZConnection beállításai?
    Mutasd a teljes hozzászólást!
  • Az IBX komponensek nem jók neked. Interbase paletta a Delphi-ben. Hasonló a kezelése a BDE-hez.
    Mutasd a teljes hozzászólást!
  • j5j5!

    Igazság szerint fogalmam sincs, hogy mi lenne a jó nekem. Éppen ezért nyitott ezt a kérdést. Olyasvalami kellene, amivel a BDE-t ki lehetne kerülni. Egyszerű kezelhetőség és átlátható működés lenne ajó. CSak mint írtam ilyennel még nem foglalkoztam, ezért minden leírásra, ötletre vevő vagyok. A későbbiek folyamán, a problémám az lesz (ha ez(ek) a megoldások mennek), hogy ha az egyik gép pl. Monoron, a másik (az adatbázis szerver)Szeged van, vagyis interneten kell lekérdezni. Tehát akkor a kérdésem ilyen irányba is bővülne. Szóval a csapásirány: Kerüljük ki a BDE-t lenne. Üdv.
    Mutasd a teljes hozzászólást!
  • Én delphi 5-öt(IBX 4.52) + Interbase 6.0.2-t használok ami még ingyenes! Van a neten kirakva egy IB szerverem is és csont nélkül el tudom érni a kliens gépről csak egy ini file-t rakok az exe mellé, amiben benne van a szerver címe stb. A kliens gépre pedig az ib klienst, ami egy pici exe és automatikusan feltelepül. Ja és nyílván Tcp\Ip a protokol.
    Mutasd a teljes hozzászólást!
  • Az ini file-om egy text file amiben ez van:
    USER:SYSDBA
    PASSWORD:masterkey
    CHARTYPE:WIN1250
    DATABASE:vi.myip.hu:D:\DATABASE\ASZ.GDB
    PRINTER:LPT1

    Most hagyjuk, hogy benne van a jelszó és nincs titkosítás stb. Belerakhatod egy paradox táblába is, majd jelszóval levéded!
    Mutasd a teljes hozzászólást!
  • Delphi7/Interbase palettáról: TIBDatabase
    Rajta jobb klikkre jövö popupban: "InterbaseExpress 7,08"

    Miért is nem jó az IBX?
    Mutasd a teljes hozzászólást!
  • Interbase paletta a Delphi-ben.
    =IBX!!
    Mutasd a teljes hozzászólást!
  • már csak az lenne a kérdésem, hogy a FireBird server honnan fogja tudni, hogy én melyik adatbázist akarom használni.


    Pontosan ezt hatarozod meg a ZConnectben(Database).
    A Queryknél vagy tablaknal pedig mindig visszahivatkozol a Connectre(ZConnect property).

    A ZEOS az én tapasztalatom szerint gyors, jonnyen hasznalható.
    Mutasd a teljes hozzászólást!
  • Köszönöm mindenkinek a hozzászólást. Ha van még konkrét ötlet, idevele.
    Mutasd a teljes hozzászólást!
  • LC! Lenne hozzád egy buta kérdésem.
    (Vagy bárkihez, aki tud megoldást)

    Követtem az utasításaid, eddig nem is volt gond. Azonban ha a ZConnection1.Connected=False átállítom True-ra, akkor a következő hibaüzi:

    "SQL Error: file 'itt az adatbázisom helye, ami jó helyen van' is not a valid database. Error Code: -922. Connection authorization failure."

    Lehet, hogy rossz az adatbázis típusa? Próbáltam Paradox 7, Access adatbázisokkal is, de ugyanez a hiba! Ehhez vmi speckó adatbázis kellene? Vagy milyen típusú adatbázisokat fogad el? A delphi beépített Database Desktop-jával próbálkoztam adatbázisokat létrehozni! Szóval mit rontok el?
    Mutasd a teljes hozzászólást!
  • A FireBird meglepő módon csak FB és bizonyos IB (megfelelő ODS-el rendelkező) adatbázisokat kezel, tehát nem egy univerzális adatbázismotor, ami megenné a Paradox, Access, netán dBase adatbázisokat. Még szerencse, hülyét kapnék, ha így lenne. Megfelelő formátumú .gdb (10-es ODS), de inkább .fdb adatbázisokkal dolgozik.

    De akkor miről beszéltünk eddig? Nem értek én már semmit sem. Bár lehet, hogy én vagyok értetlen? Tényleg nem értem akkor miről volt eddig szó.

    Alex
    Mutasd a teljes hozzászólást!
  • No igen. Szóval eddig arról volt szó /mivel most először próbálkozom a ZeOS-FireBird kapcsolatokkal/, hogy hogyan kell Delphi alatt beállítani a dolgokat. Szó sem volt eddig arról, hogy milyen adatbázis típusokkal szeretnék dolgozni. Tegnap próbálkoztam vele, de mint írtam hibába ütköztem. Ekkor fordultam ide ismét, hogy mi a baj. De eddig nem tudtam, hogy a FireBird nem támogat jónéhány adatbázis típust. Mostmár tudom.

    Szóval akkor mivel lehet .gdb vagy .fdb adatbázisokat kreálni?
    Mutasd a teljes hozzászólást!
  • Állj! Most kreálni akarsz, vagy kapcsolódni valamilyen prog nyelvből? Mert, ha kreálni, akkor mondjuk egy scriptet megírsz egy szövegszerkesztővel, majd pl. egy sql managerben végrehajtatod pl. EMS. Delphiből meg ibx-el kapcsolódsz meg stb. Miért nem jó neked az ibx? Ezt a kérdést már feltette neked más is itt, de te mintha süket lennél! ZeOS így ZeOS úgy, a többit meg sem hallod?!
    Mutasd a teljes hozzászólást!
  • Szia xar.

    Meghallom ne aggódj. Csak a ZeOS lib használatát már leírta valaki, így ezt tudom használni. IBX-ről nem sok beállítást láttam. Szóval nekem adatbázist is kell létrehoznom, mivel egy nyilvántartót akarok írni, így kellenek az adatbázis állományok is. Mivel nem tudom milyen programmal lehet a fentebb említett .fdb adatbázist létrehozni, ezért bátorkodtam az imént megkérdezni. De ha valaki leírja az IBX beálításait, milyen adatbázisokat lehet vele használni, kell-e neki BDE, milyen adatbázis szerver kell hozzá, akkor legyen az. Engedek az "erőszaknak".

    De ismétlem. Eddig csak a BDE-t használtam , de semmi SQL. Ha ez már menne, az nagy ugrás lenne.
    Mutasd a teljes hozzászólást!
  • Asszem az adatbázis létrehozás megoldódott: A neve: EMS Interbase/FireBird Manager. Szerintem xar erre gondoltál.
    Mutasd a teljes hozzászólást!
  • Pontosan! Nekem 3.9.5.1 van meg, ami a lgújabb szerintem. Ha grafikusan szeretnéd megtervezni bizonyos szinten az adatbázisaidat, akkor ajánlom neked a case stúdio 2 -t. Egyébként az ems-ben is benne van, csak nem annyira látványos! Megjelent egy e-book is magyarul az interbase-ról "Az Interbase" a címe és Szabó János írta. Kiskapunál lehet kapni 4500 Ft. Ha ezt megveszed és elkezded olvasni, akkor közelebb jutsz a megoldáshoz! Ebben van a case studióról is leírás, adatbázis létrehozás, triggerek meg minden ami kell! (A neten is megtalálod a case stúdió leírását) Az ibx meg alapból benne van a delphi 5 prof. vagy enterprise változatban vagy magasabb verziókban. Nyílván ez elméletileg nem ingyenes ezért ajánlhatják neked a zeos-t! Az ems-el szépen meglehet csinálni a scripteket, majd tanulmányozni őket, hogy mi mit jelent bennük. Ha tudok segíteni szólj, mert nemrég tértem át paradoxról interbase-ra. A programjaid nagy része elég könnyen átültethető, de egy kis szemléletváltás kell hozzá! Datapump az a program amivel adatokat tudsz átpumpolni és ez ingyenes.
    Mutasd a teljes hozzászólást!
  • Ja, az ibx-el interbase adatbázisokat tudsz kezelni!
    Mutasd a teljes hozzászólást!
  • Ja BDE nem kell hozzá! Csak ib kliens.
    Mutasd a teljes hozzászólást!
  • Hali.

    Megpróbálkozom ezzel. Ha megy a ZeOS+FireBird akkor marha boldog leszek, ha nem akkor kereslek IBX ügyben. Próbálkozom ezerrel.
    Mutasd a teljes hozzászólást!
  • Hali!

    Ezt most nem bántásként mondom, de először az alapoknál kéne kezdeni, mert én úgy látom, hogy itt óriási fogalmi zavarok vannak kialakulóban. Szerintem még az elején próbáld meg tisztázni ezeket a dolgokat, ha tudod, mert úgy látom nem igazán vagy tisztában alapvető fogalmakkal. Ez persze csak javaslat és ne vedd sértésnek.

    Üdv:Alex
    Mutasd a teljes hozzászólást!
  • Semmi baj. Az adatbázis alapokkal (SQL) tényleg csak alapszinten képben vagyok. Access-t használtam. /Nagy dicsőség ./ De a Delphit szeretem, és használni szeretnám adatbázis kezelésre.

    Ja Delphiben lévő SQL vagy ZeOS tudja/ná a következőt?
    with ZQuery1 do
    begin
    Close;
    SQL.Clear;
    Sql.Add('INSERT into ENAR (ENARKOD, ENARSORSZ);');
    Sql.Add('VALUES (ekod,esor);');
    Parambyname('ekod').Value:=Edit1.Text;
    Parambyname('esor').Value:=Edit2.Text;
    Open;
    end;

    Mert ez nagyon nem akar menni vele.
    Mutasd a teljes hozzászólást!
  • Üdv!

    Ez így menni fog, csak a pontosvesszőket ne használd (mármint az SQL.Add('...') paraméterének a végén), mert azt nem fogja szeretni, egyébként elvileg így jónak kéne lenni.

    Üdv:Alex
    Mutasd a teljes hozzászólást!
  • Hajrá! Azért szerintem vedd meg a könyvet, ami írtam, vagy a Baga Edit félét!
    Mutasd a teljes hozzászólást!
  • Egyébként a Firebird az Interbase-ból nőtte ki magát, így sok hasonlósság lehet a kettő között, bár én Firebird-öt még nem használtam, vagyis egy interbase-ról szóló könyv nem fog megzavarni az Firebird-ben sem!
    Mutasd a teljes hozzászólást!
  • Alex.

    Nem megy. Nem találja a ParambyName -ben megadott paramétereket.

    xar!

    A Baga Edit féle könyv megvan/megvolt csak kölcsönadtam.

    SQL kérdés egy gyengeelméjűtől(én.)

    Adott a ZUpdateSQL hozzá van csapva a ZQuery-hez. A ZUpdateSQL.InsertSQL ki van töltve kb igy: Insert into tabla(x1,x2,x3) values (:egy, :ket, :har)
    A ZUpdate.Params-ban fel vannak sorolva a fenti paraméterek és a Values értéküknek van adva egy Edit[x].Text /ha kell akkor strtoint, strtodate fvekkel/. Van egy Felvitel gomb a Formon, aminek a tartalma kb igy nez ki:
    With InsertSQL do
    begin
    Open; /Vagy ExecSQL;/
    end;

    Innetől kaki van ha a Felvitel gombra kattintok. A logikát értem, csak a megvalósítása szokatlan nekem.

    Ötlet?

    Ja ha Query1.SQL -t kitöltöm valahogy így, akor rendesen megy:

    SELECT * From tabla;
    Where valami=valamivel;

    Csak a paraméteres dolgokat egyátalán nem szereti.
    Előre is köszönöm a türelmeteket.
    Mutasd a teljes hozzászólást!
  • Hali!

    Nem néztem meg rendesen, bocs. Ha paramétert akarsz, akkor:
    SQL.Add('INSERT INTO MY_TABLE (FIELD1,FIELD2)')
    SQL.Add('VALUES (:PARAM1,:PARAM2)');

    Vagyis kettőspöttyel tudsz paramétert definiálni és akkor hozza létre a paraméterobjektumokat a komponens.

    Szóval a Te esetedben:

    Sql.Add('INSERT into ENAR (ENARKOD, ENARSORSZ) '); Sql.Add('VALUES (:ekod,:esor)'); Parambyname('ekod').Value:=Edit1.Text; Parambyname('esor').Value:=Edit2.Text;

    Üdv:Alex
    Mutasd a teljes hozzászólást!
  • Köszi Alex.


    Nagyon segítőkész vagy. Megpróbálom.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd