![]() |
Datenbank: Paradox 7 • Zugriff über: Delphi 7, SQL
Memofeld in Paradox Datenbank speichern
Hallo,
nach langer und verzweifelter Suche starte ich doch ein neues Thema, da ich leider nicht schlau geworden bin. Will den Text eines Memos (mit Absätzen) in meine Datenbank speichern und auch wieder auslesen können. Habe viel zu BLOBs gesucht, aber wiegesagt bin verwirrt. Vielen Dank für eure Hilfe |
Re: Memofeld in Paradox Datenbank speichern
Hab jetzt bisschen was zusammen gebastelt, wovon ich eigentlich keine Ahnung habe.
Er fügt einen neuen Datensatz hinzu, aber das Feld (BLOB) Beschreibung2 bleibt leer. Der untenstehende Teil ist fehlerhaft. Vielleicht kann ihn gerade jemand korriegieren bzw. mir etwas dazu erklären. Danke Sql.Text := 'INSERT INTO DBFilme (Beschreibung2,Beschreibung2) VALUES (100,:Memo)';
Delphi-Quellcode:
var Stream: TMemoryStream;
begin Stream := TMemoryStream.Create; try Memo1.Lines.SaveToStream(Stream); with Query2 do begin Sql.Text := 'INSERT INTO DBFilme (Beschreibung2,Beschreibung2) VALUES (100,:Memo)'; Params.Clear; Params.CreateParam(ftBlob, 'Memo', ptInput); ParamByName('Memo').LoadfromStream(Stream, ftBlob); ExecSQL; end; finally Stream.Free; end; end; |
Re: Memofeld in Paradox Datenbank speichern
Guten Morgen...
versuchs mal damit:
Delphi-Quellcode:
...Vorraussetzung ist natürlich, daß Beschreibung2 ein MemoFeld ist.
begin
Query2.Sql.Text := 'INSERT INTO DBFilme (Beschreibung2,Beschreibung2) VALUES (100,:Memo)'; ParamByName('Memo').Value:= Memo1.Text; ExecSQL; end; PS: Ich denke 2 mal Beschreibung2 ist ein Schreibfehler... :gruebel: :hi: |
Re: Memofeld in Paradox Datenbank speichern
Ja, glaube eines der beiden sollte ein Zahlenwert sein, nur kA welcher und was dieser dann zu bedeuten hat.
Deine Variante funktioniert leider auch nicht bei mir. Wie kann man sich eigentlich eine .mb-Datei angucken, inder der BLOB dann gespeichert wird? |
Re: Memofeld in Paradox Datenbank speichern
:gruebel: Irgendwie stimmt da was im Ansatz nicht.
Beschreibe doch mal was du vorhast, wie deine Tabellenstruktur aussieht, evt. Fehlermeldungen, welche Zugriffskomponenten (TQuery,TDataSource) benutzt du... Zitat:
Zitat:
Auf Grund dessen habe ich mir den Kommentar zum Alter von Paradox verkniffen. Lerne erst mal mit Daten umzugehen, bis du dich an ein vernünftiges DBMS wagst. |
Re: Memofeld in Paradox Datenbank speichern
haentschman...
das einzige womit ich nicht umgehen kann ist dieses BLOB-Feld (Memo). Mein ER ist auf Papier und ist auch für diese Fragestellung total uninteressant. Es geht lediglich darum, dass ich in einer Tabelle ein Memo-Feld "M" (Blob) habe und aus meiner Form die Daten dorthin senden will (speichern) und wieder lesen können. Gruß, Malte PS: Arbeite mit TQuery und TDataSource kenne mich mit Streams gar nicht aus, aber weiß nicht wie ich es sonst lösen könnte, weil die anderen Sachen bisher nicht funktioniert haben. Es kam zwar keine FEhlermeldung, es stand dann aber auch nix in dem Feld drin... :P
Delphi-Quellcode:
with Query2 do begin
SQL.Text := 'UPDATE DBFilme SET Beschreibung2 = :P0 WHERE FiNr = :P1'; Params[0].AsBlob := Memo1.Lines.text; Params[1].AsInteger := 1; ExecSQL; end; |
Re: Memofeld in Paradox Datenbank speichern
arbeitest du grundsätzlich mit SQL Befehlen oder auch direkt mit den Tabellen.
direkt wäre auch noch möglich:
Delphi-Quellcode:
PS: Ich weiß nicht, wo Du das mit den Streams herhast, aber ich habe mit o.G. Methoden schon reihenweise Memo´s in Paradox abgelegt. Deswegen dachte ich an einen Fehler im Design.
Tabelle.Edit;
Tabelle.FieldValues['Bezeichnung2']:= Memo1.Text; Tabelle.Post; [quote:]aber auch nix in dem Feld drin... [/quote:] wie list du das Feld wieder aus ? bzw. woher weißt du, das nix drinsteht ?
Delphi-Quellcode:
with Query2 do begin
SQL.Text := 'UPDATE DBFilme SET Beschreibung2 = :P0 WHERE FiNr = :P1'; Params[0].AsBlob := Memo1.Lines.text; // versuche mal ParamByName('P0').Value := Memo1.Text; Params[1].AsInteger := 1; ExecSQL; end; |
Re: Memofeld in Paradox Datenbank speichern
Hallo Malte,
dein Code in Beitrag #2 muss mindestens noch um eine Zeile erweitert werden, da nach dem Schreiben in einen Stream der Positionszeiger an der erreichten Endstelle stehen bleibt. Beim Auslesen deines Streams werden so 0 Bytes gelesen, weil Offset = Size ist.
Delphi-Quellcode:
Freundliche Grüße
// ...
Memo1.Lines.SaveToStream(Stream); Stream.Position := 0; // ... |
Re: Memofeld in Paradox Datenbank speichern
Zitat:
Hatte es irgendwann mal geschafft, dass die 1. Zeile dort angezeigt wurde, aber der Rest nicht gespeichert wurde. Also danke für die Hilfe, aber klappt noch nicht :/ so schwer kann das doch nicht sein :( |
Re: Memofeld in Paradox Datenbank speichern
Guten Morgen...
Zitat:
lese mal das Feld per SQL wieder aus und zeige es in einem anderen Memo an.
Delphi-Quellcode:
Query.SQL.Text:= 'select Bezeichnung2 from Tabelle';
Query.Open; MemoTest.Text:= Query.FieldValues['Bezeichnung2']; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz