Datenbank: Firebird • Version: 1.5 • Zugriff über: TQuery
Probleme mit TQuery und Records als Blob
Hallo ich habe einen Record mit mehrern Unterpunkten:
TIMTBild= record Bildid:integer; Bildfile,Bildpath,Bildnummer:string; BildFileszuladen:Tlistestring; Savepfad:string; Savefile:string; AusschnittXvon,AusschnittXbis:TListe; AusschnittYvon,AusschnittYbis:TListe; ROIlength:TListereal; ROIBezeichnung:TListestring; MainAusschnitt,LaengeAusschnitt:integer; avi,bmpseq,bmpimage:boolean; lokalisation:integer; manualroi:real; leftx,rightx,topx,bottomx,bildlaengeUltraschall:re al; pixelsize:real; laengesequenz:integer; bildwidth,bildlength:real; imgShown:integer; AnzeigeNearWallIntima,AnzeigeFarWallIntima,Anzeige FarWallAdventitia:boolean; IMTvalue:array of TIMT; Seq:array of TSeq; Chart:TChartview; correctdetectedimg:integer; init:Tinitalize; end; Wenn ich die Daten speichern möchte, lese ich zu jedem Record die einzelnen Unterpunkte aus und speichere sie jeweils für sich. Wenn ich dann die Daten wieder einlade, setze ich eben jedes Einzelne Teil wieder zusammen und habe so meinen Record wieder. Einziges Problem, ich langweile mich fast zu tode wenn ich den Record speichere bzw lade... Dauer so 10 Sekunden pro Record beim Speichern in Firebird... Ich habe jetzt ein bisschen rum gesucht und habe ein paar Hinweise gefunden, das einen Record auch einfach komplett als Record speichern kann bzw den Record in einen Blob speichern kann? Kann mir da jemand weiter helfen? Wäre super... P.S. Ich greife auf die Datenbank mit einem TQuery zu... Danke im Vorraus |
Re: Probleme mit TQuery und Records als Blob
Hallo,
> Einziges Problem, ich langweile mich fast zu tode wenn ich den Record speichere bzw lade... > Dauer so 10 Sekunden pro Record beim Speichern in Firebird... und was erwartest du jetzt ? Ohne Quellcode ist das nur Rätselraten. So auf's blaue prepared Queries benutzt du nicht ? Heiko |
Re: Probleme mit TQuery und Records als Blob
Ich vermute auch es ist der zeitaufwand umd den record (der ja wieder aus verschiedenen Strukturen (Listem komponenten, ...) besteht zu zerlegen in Inserts zu verwandeln und später das ganze umgekehrt.
Hier würde sich ein Blob sehr anbieten. http://mc-computing.com/Databases/De...ird/Blobs.html http://www.delphi-library.de/topic_+...ern_12042.html |
Re: Probleme mit TQuery und Records als Blob
Hallo,
die Frage ist ja, braucht er die einzelnen Daten eigenständig, muss also danach gesucht werden können. Wenn nicht, geht auch ein Blob. Heiko |
Re: Probleme mit TQuery und Records als Blob
Sorry falls ich nicht genug mein Problem beschrieben habe.
Ich möchte grad nicht die Informationen einzeln zerlegen und denke das ein Blob das optimale wäre. Aber wie speichere ich ein Record wie oben angegeben in einen Blob mit einem Query? Ich habe schon mal ein bisschen im Netz gesucht, aber keinen Code dazu gefunden. Ein Hinweis nur würde helfen. Ziel: Record mit Blob über TQuery in Blob und wieder zurück? Wie geht das... Vielleicht ist das eine zu triviale Frage, aber bei mir hängt es grad sorry Gruss Markus |
Re: Probleme mit TQuery und Records als Blob
Hallo,
hier 2 meiner Routinen Heiko
Delphi-Quellcode:
{ name: UpdateTextBlobField_Ex usage: update a blob field parameter: theTableName - table name thePrimaryKeyName - name of the primary key thePrimaryKeyValue - value of the primary key theFieldName - field name of the blob field theText - field value return parameter: theErrorStr - error message return: false on error notes: - additional to UpdateTextBlobField name of the primary key is needed } function UpdateTextBlobField_Ex(const theTableName: String; const thePrimaryKeyName: String; thePrimaryKeyValue: Integer; const theFieldName: String; const theText: String; var theErrorStr: String): Boolean; var FQuerySQL : TQuery; begin Result:= False; theErrorStr:= S_internal_error; try FQuerySQL := CreateQuery; // TQuery.Create ... try with FQuerySQL do begin DataBaseName:= C_ALIASNAME; // Konstante SQL.Add('Update '+theTableName+' Set '); SQL.Add(theFieldName+'=:'+theFieldName); SQL.Add('Where '+thePrimaryKeyName+'=:Id'); ParamByName('Id').AsInteger:= thePrimaryKeyValue; if theText='' then begin ParamByName(theFieldName).DataType:= ftBlob; ParamByName(theFieldName).Clear; ParamByName(theFieldName).Bound:= True; end else begin ParamByName(theFieldName).AsBlob:= theText; end; ExecSQL; end; { with FQuerySQL do } Result:= True; finally FQuerySQL.Free; end; except on E: Exception do theErrorStr:= E.message; end; end; { UpdateTextBlobField_Ex } { name: LoadTextBlobField_Ex usage: load the text from the blob field parameter: theTableName - table name thePrimaryKeyName - name of the primary key thePrimaryKeyValue - value of the primary key theFieldName - field name of the blob field return parameter theText - the loaded field value theErrorStr - error message return: false on error notes: - additional to LoadTextBlobField name of the primary key is needed } function LoadTextBlobField_Ex(const theTableName: String; const thePrimaryKeyName: String; thePrimaryKeyValue: Integer; const theFieldName: String; var theText: String; var theErrorStr: String): Boolean; var FQuerySQL : TQuery; StringStream : TStringStream; Stream : TStream; bOK : Boolean; begin bOK:= False; theErrorStr:= S_internal_error; theText:= ''; try FQuerySQL := CreateQuery; // TQuery.Create ... StringStream := TStringStream.Create(''); try with FQuerySQL do begin SQL.Add('Select '+theFieldName+' From '+theTableName); SQL.Add('Where '+thePrimaryKeyName+'=:Id'); ParamByName('Id').AsInteger:= thePrimaryKeyValue; Open; try if QueryIsNotEmpty then begin Stream:= CreateBlobStream(FieldByName(theFieldName),bmRead); try StringStream.CopyFrom(Stream,0); finally Stream.Free; end; theText:= StringStream.DataString; bOK:= True; end; finally Close; end; end; { with FQuerySQL do } finally FQuerySQL.Free; StringStream.Free; end; except on E: Exception do begin theErrorStr:= E.message; end; end; Result:= bOK; end; { LoadTextBlobField_Ex } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz