Többek között az itt olvasottak alapján is, elkezdtem beágyazott Firebird adatbázist használni. Majdnem megy is, csak lett egy problémám (valószínűleg lesz még, de most ez van):
Van a progiban minden, ami kell. Adatmodulon az adatbázis és a session, formon a querry, datasource és egy rács. Az SQL SELECT műxik. A gond a rendezéssel van (ORDER BY). Numerikus mező szerint minden további nélkül rendez, de szöveges mezőnél lefagy. Sőt, ha az adatbázisban indexet definiálok, és történetesen ez egy szöveges mező szerint történik, már tervezési időben lefagy, amikor be akarok állítani egy táblán (IBTABLE) egy INDEXNAME tulajdonságot.
MIÉRT??
...És ha már itt tatunk. Tud valaki egy jópof, testre szabható, igazán IB-kompatibilis rácsot?
Gyorskeresés
Legfrissebb anyagok
Szakmai témák
PROHARDVER! témák
Mobilarena témák
Általános témák
GAMEPOD.hu témák
Adok-veszek témák
Hardver apróhirdetések
Hirdetés
Hozzászólások

Imrege
(újonc)

Imrege
(újonc)
Senki se tud segíteni? Láttam, töben megnézték a kérdést. Most vagy nem dolgozik senki Firebird-del, vagy nem jelentkezett a probléma. De hogy tipp se legyen... Pedig biztosan vannak itt tapasztalt adatbázis-programozók.

Divi
(fanatikus tag)
magam még kezdő vagyok Adatbázisozós témakörben. De ezekszerint az fáj neki, ha stringekkel kell -akármit- csinálnia. Nem lehet, hogy nyelvi beállítások (nem léte) fájnak neki? (márha a FB érzékeny ilyesmire)
A Sima Grid miért nem jó? 
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Imrege
(újonc)
Talán jó a sima grid is, bár még nem néztem szét benne alaposan. Arra lesz szükségem, hogy néha bizonyos soroknak más legyen a színe, bizonyos cellák félkövérek legyenek, csak olvashatók, illetve kezelnem kell a cellákba való ki- és belépést (pl. kilépéskor bekapcsolni egy ezres csoportosítást egy számértéken, belépéskor kikapcsolni) stb. Tehát sok olyan művelet, amit egy Tedit-en meg lehet csinálni. Ha ezeket tudja a grid, akkor jó lesz.
A Firebird-re egy másik fórumon se válaszolt senki. a területi beállítást megvizsgálom, kösz.

g4dg3t
(senior tag)
A tablaidban a szoveges mezoknek megadtad a Characterset es Collation tulajdonsagat?
Bite my shiny metal ass!

btotyi
(tag)
Mi az, hogy lefagy ? Az IBX verzióját frissítetted ? IBTABLE-t nem igazán ildomos használni elég sok probláma van vele meg overheadet is okoz. Nézd meg az ExRxDBGrid-et (kell hozzá az Rx is)

Imrege
(újonc)
A charset Windows1250-es, annak jónak kell lennie.
A rácsra rákersek, köszi.

Alan
(fanatikus tag)
Szerveroldalra ajánlom neked az IBExpert-et, fantasztikus segédeszköz. Ismer minden Interbase és Firebird verziót külön-külön. A Personal változata ingyenes, egyetlen korlátja, hogy egy sémaelemen (pl. tábla) max. 255 módosítást végezhetsz. Bár a tapasztalatom szerint ezt kizárólag új mezők hozzáadásánál számolja, tehát a kisebb módosításokkal együtt ennél jóval többet is enged. A táblaszerkesztőjében megnézheted a tábla adattartalmát is, meg készíthetsz és tesztelhetsz indexeket. Ezzel tervezd meg és fejleszd ki az adatbázist, majd aztán írj hozzá kliensprogramot.
Kilensoldalra a Zeos Database Objects kell neked. Legjobb. Igazi jó orosz ware. És ingyenes, sőt, forrást is kapsz hozzá. Firebird-del is tökéletesen működik (beállíthatod, milyen adatbáziskezelőd van szerveroldalon, még MS SQL Server-t is tud).
Bővebben: link
Bővebben: link

Alan
(fanatikus tag)
Ja, és az adatrács tetszőleges, ha a Zeos DBO-ot használod. Minden működni fog, a sima TDBGrid is. Szerezz be valami jót 

Sir John
(kvázi-tag)
Kérdésem:
Hogyan tudom megváltoztatni 1.5 Firebird adatbázisom CHARSET-jét és COLLATION ORDER-ét magyarra
De jegyezd meg jól, míg a Föld kerek, mindig lesznek jumperek ...

Alan
(fanatikus tag)
Adatbázis létrehozása:
SET SQL DIALECT 3;
SET NAMES WIN1250;
CREATE DATABASE 'valami.fdb'
USER 'SYSDBA' PASSWORD 'masterkey'
DEFAULT CHARACTER SET WIN1250;
Csatlakozásnál a kliens komponenseiden szintén állíts be WIN1250-es karakterkészletet, különben a szerkesztésnél gondod lesz. Ezt minden kliensnél máshogy kell, de egyértelmű szokott lenni.
A collation order-t mezőnként lehet változtatni, például így csinálhatsz egy táblát magyar rendezésű mezőkkel:
CREATE TABLE VALAMI (
CODE INTEGER NOT NULL,
TEXT VARCHAR(32) CHARACTER SET WIN1250 COLLATE PXW_HUN
);

Divi
(fanatikus tag)
Jóestét mindenkinek!
Nem tudjátok, hogyan tudom, az adattábla DATE mezőjében Dátum/Időt eltárolni?
Keresgélem de sehol nem találtam helyes szintektikát 
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Divi
(fanatikus tag)
![[kép] [kép]](http://www.photomall.info/images/arrow.gif)
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

btotyi
(tag)
használj parametrizált queryt mert akkor nem kell foglalkoznod a különböző dátumformatumokkal
query1.sql.clear;
query1.sql.add('insert into tabla set mezonev=:datum');
query1.parambyname('datum').asdatetime := now;
[Szerkesztve]

Divi
(fanatikus tag)
egész időszerű a válaszom 
Kedves btotyi! ,vagy más hozzáértő!
Az istennek se megy! 
A ''parambyname.astipus'' az írható tulajdonság?
azaz, aparambyname('alma').astipus:= érték;
létrehozza az 'alma' paramétert vagy feltételezve, hogy már létrejött értéket ad neki?
Ha nem hozza létre akkor hogy kell paramétert létrehozni (futásidőben)?
Próbálkoztam a ~.Params.AddName(\) eljárással de sehogy nem jutottam előre 
Hogy kell egy tisztességes paraméteres SQL parancsot összehozni?
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Divi
(fanatikus tag)
![[kép] [kép]](http://www.photomall.info/images/arrow.gif)
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Alan
(fanatikus tag)
Nem kell kézzel létrehozni, hanem az SQL parancsba kell szabályosan kettősponttal beírni a paramétereket, mire azok automatikusan létrejönnek. A D7 súgóból vett példa:
Query2.SQL.Clear;
Query2.SQL.Add('INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)');
Query2.SQL.Add('VALUES (:Name,
apital,
opulation)');
Query2.Params[0].AsString := 'Liechtenstein';
Query2.Params[1].AsString := 'Vaduz';
Query2.Params[2].AsInteger := 420000;
Query2.ExecSQL;

Alan
(fanatikus tag)
(értelemszerűen a Capital és a Population is paraméterek, nem smiley-k
)

Divi
(fanatikus tag)
Nagyon köszönöm!
Hamarosan kipróbálom!
Szerk: ParamByName ezen esetekben gondolom nem megy...
[Szerkesztve]
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Alan
(fanatikus tag)
Dehogynem megy. A Param objektumok automatikusan létrejönnek az SQL parancs beállításakor, utána már név szerint is lehet rájuk hivatkozni.

Divi
(fanatikus tag)
Ismét én 
Szeretném megkérdezni a nagyérdeműt, hogy egy RichEdit tartalmát milyen módon tudnám eltárolni egy FireBird adatbázisban?
Amit eddig elgondoltam:
1.)Csinálok egy TStream változót és abba belementem a richedit taralmát SaveToSteam metódussal.
2.) Létrehozok egy BLOB oszlopot az adott Táblában.
> Milyen ''SUB_TYPE'' és ''SEGMENT_SIZE'' kell a BLOB-hoz?
3.) Feltöltöm (hogy?)
INSERT INTO Tábla BLOBmenző
values(:blob);
SQL.pararmbyname('blob'). ??
Valaki tudna ötletet adni?
Köszönöm válaszaitokat!
[Szerkesztve]
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Alan
(fanatikus tag)
Egy lehetséges megoldás: csinálj egy blob mezőt a kívánt táblába, majd abból egy egyszerű SELECT és a megfelelő rekord megkeresése után
Edit;
AStream := CreateBlobStream(FieldByName('idemegyablob'), bmWrite);
AStream.CopyFrom(SourceStream, SourceStream.Size);
AStream.Free;
Post;
(ahol a SourceStream már tartalmazza a RichEdit tartalmát és persze visszaálltál a stream elejére, mielőtt az adatbázisba akarod írni, az AStream pedig egy helyi változó).
Itt az a legfontosabb, hogy (1) kell a CreateBlobStream, (2) ezt aztán fel kell szabadítani, mielőtt (!) a Post-ot meghívod, különben Null-t fog menteni az adatbázisba.
Másik lehetséges megoldás (ez meg már SQL-szagúbb és gyorsabb):
Query.SQL.Text := 'INSERT INTO tabla (recid, richedit_content) VALUES (:id, :content)';
Query.ParamByName('id').DataType := ftInteger;
Query.ParamByName('id').AsInteger := 12345678;
Query.ParamByName('content').LoadFromStream(SourceStream, ftMemo);
Query.ExecSQL;
[Szerkesztve]

Divi
(fanatikus tag)
Köszönöm a folytonos és eredményes segítségnyújtást! ![[kép] [kép]](http://www.prog.hu/common/images/forum/smile41.gif)
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Alan
(fanatikus tag)
Nagyon szívesen, örülök, hogy megy 

Divi
(fanatikus tag)
Üdvözletem!
Nos, alan BLOB feltöltése remekül működik most egy újabb szerintem teljesen meglepő feladatot kéne megoldanom, és hát nem megy. Le kéne kérni, és ki kéne tenni egy RichEdit-be. (ugye, hogy meglepő
)
Felbuzdulva alan példáján, próbáltam visszafele el sütni a dolgot, ám nem sikerült.
A CreateBlobStream -et pl meg se találtam, hogy milyen osztályban vagy unitban van 
Tehát egy BLOB-otszeretnék egy RichEdit.LoadFromStream ( ) -jébe belevarázsolni...
Ötletek?
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Divi
(fanatikus tag)
Update:
Jippi megvan a ''CreateBlobStream''! (ami ''TIBCustomDataSet''-ben van benne. )
Az egyetlen rossz, hogy én ''TIBSQL''-t használok, ami a ''TComponent''-ből származik.
Így megoldható a BLOB lekérése, vagy létre kell hozzak egy Queryt?
[Szerkesztve]
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Alan
(fanatikus tag)
Hát, nem akarok nagyon beleszólni a fejlesztésbe, de javaslom, hogy inkább TDataSet-ből származó komponenseket használj, hacsak nincs valami extrém nagy teljesítményigényed és nem értesz 1000%-os mélységig az adatbázismotorhoz (a CreateBlobStream ugyanis a TDataSet metódusa, tehát minden ebből származó komponens tudja, például a TQuery és a TIBQuery is).
Ha tehát TIBQuery-t használsz, megfordítva is működni fog a blobok kezelése.

Divi
(fanatikus tag)
Igazából azért választottam az IBSQLt, mert egyszer se használok, DBedit, és hasonló kontrollokat. Így feleslegesnek tartottam, hogy legyen olyen lehetőség, hogy tudjak hozzá kötni ilyen csodákat.
Hibás valahol az elgondolásom?
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Divi
(fanatikus tag)
Update.
Közen lehet, hogy megfogtam az Isten lábát és találtam egy könnyű megoldást:
Var st: TMemoryStream;
Begin
st:=TMemoryStream.Create;
IBSQL.FieldByName('adat').SaveToStream(st);
R_adat.Lines.LoadFromStream(st);
End;
A furcsa, hogy hiba nélkül lefut, ÁM látszólag nem történik semmi. Mintha nem jönne át semmi és ennek megfeleően a RichEditben sem jelenik meg semmi :-\
Éreztem, hogy nem adja magát ilyen könnyen...
[Szerkesztve]
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Divi
(fanatikus tag)
Megoldódott...
Halom keresgélés után rájöttem, hogy manuálisn kell visszaállítani a Stream mutatóját az elejáre.
Stream.position:=0;
Hurrá van


lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Alan
(fanatikus tag)
Rulez, ügyes vagy 
(Azért gondold meg azt a TDataSet-származékot, hátha később mégis szükséged lesz rá...)

Divi
(fanatikus tag)
Hát, már késő, nagyon közel van a határidő.
De eddig még nem fordult elő, hogy használnom kellett volna 
(Vagy nem vettem észre, hogy azzal egyszerűbb lett volna)
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Divi
(fanatikus tag)
Viszont, SeGíccség!
Kezdi szorítani a t*keimet a határidő, ezért sürgősen megoldást kellene találnom a következő problémára:
Hogyan lehetne 1 SELECT erejéig, rávenni a FireBird motorját, hogy kis/nagybetű függetlenül hasonlítson össze?
Magyarul:
Keresni akarok egy táblában egy szöveg szerint. És jó volna, hogy ha azok a rekordok is megjelennének, amikben a a szöveg kis/nagy betű eltéréssel ugyan de szerepel a keresett szöveg.
Ötletek?
SELECT NEV FROM TABLA
WHERE NEV Like('%:keresett%')
keresett=> 'VaLaMi SzöVeG'
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Alan
(fanatikus tag)
Fejből nem tudom, de pl. biztos van valami UPPER() vagy ilyesmi függvény, és akkor először csupa nagybetűsre alakítod a keresőszövegedet, majd így írhatod az SQL-edet:
SELECT NEV FROM TABLA
WHERE UPPER(NEV) Like('%:keresett%')
keresett=> 'VALAMI SZÖVEG'

Divi
(fanatikus tag)
Vopsz, bocs elfelejtettem válaszolni, miszerit természetesen ez is működik. 
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

Divi
(fanatikus tag)
Üdvözletem mindenkinek!
Egy FireBird szervernek IBSQL komponenssel küldök utasításokat. És azt szeretném megtudnk, hogy van-e valami bizts megoldás pl egy INSERT után, hogy visszakapjam az épp feltöltött rekord Azonosítóját?
Eddig úgy csináltam, hogy feltöltöm a rekordot, majd utána egy SELECT -tel lekérdezem. Csak ugye ez elég barbár.
Van erre valami jó teknika?
[Szerkesztve]
lá lá lá lá lá lá lá Lila Liba gá gá gá gá gá gá

btotyi
(tag)
Használj tárolt eljárást. pld egy generátorból kiadod az értéket, beszúrod a táblába és az eljárás visszatérési értékeként visszaadod.

robagp
(kvázi-tag)
Hello!
Egy firebird windows- windows hálózatot kellene csinálnom /házi feladat/.
Ami világos, hogy a szerver gépre installálom, ott beállítom hogy automatikusan fusson.
De a client gép már teljes üresség! :-(
Az ok, hogy van egy szerverem, de a client gépen mit telepítsek, vagy állítsak be?
Előre is köszönöm a segítséget!










