Aktív témák
-
-
Alan
aktív 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. -
Alan
aktív 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] -
Alan
aktív 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
aktív 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
); -
Alan
aktív 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
Aktív témák
- GYÖNYÖRŰ iPhone 14 Plus 128GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS4458
- LG 65C3 - 65" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
- HIBÁTLAN iPhone 12 Pro 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS4644
- Xbox One S All Digital 1 TB + kontroller 6 hó garancia, számlával!
- BESZÁMÍTÁS! Inno3D iChill X3 RTX 3080 Ti 12GB videokártya garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


apital,
opulation)');
