AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Memofeld in Paradox Datenbank speichern

Memofeld in Paradox Datenbank speichern

Ein Thema von ecHo89 · begonnen am 3. Okt 2008 · letzter Beitrag vom 5. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2   
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#1

Memofeld in Paradox Datenbank speichern

  Alt 3. Okt 2008, 16:16
Datenbank: Paradox 7 • Zugriff über: Delphi 7, SQL
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
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#2

Re: Memofeld in Paradox Datenbank speichern

  Alt 4. Okt 2008, 02:54
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;
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

Re: Memofeld in Paradox Datenbank speichern

  Alt 4. Okt 2008, 11:50
Guten Morgen...

versuchs mal damit:
Delphi-Quellcode:
   begin
     Query2.Sql.Text := 'INSERT INTO DBFilme (Beschreibung2,Beschreibung2) VALUES (100,:Memo)';
     ParamByName('Memo').Value:= Memo1.Text;
     ExecSQL;
   end;
...Vorraussetzung ist natürlich, daß Beschreibung2 ein MemoFeld ist.

PS: Ich denke 2 mal Beschreibung2 ist ein Schreibfehler...

  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#4

Re: Memofeld in Paradox Datenbank speichern

  Alt 4. Okt 2008, 15:01
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?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

Re: Memofeld in Paradox Datenbank speichern

  Alt 4. Okt 2008, 15:32
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:
Wie kann man sich eigentlich eine .mb-Datei angucken, inder der BLOB dann gespeichert wird?
so gar nicht.... mit einem Editor für Paradox kannst du dir den Inhalt des Datenfeldes in der DB anschauen.

Zitat:
nur kA welcher und was dieser dann zu bedeuten hat.
...und dann willst du mit Daten arbeiten

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.
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#6

Re: Memofeld in Paradox Datenbank speichern

  Alt 4. Okt 2008, 16:11
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...


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;
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

Re: Memofeld in Paradox Datenbank speichern

  Alt 4. Okt 2008, 16:38
arbeitest du grundsätzlich mit SQL Befehlen oder auch direkt mit den Tabellen.

direkt wäre auch noch möglich:
Delphi-Quellcode:
Tabelle.Edit;
Tabelle.FieldValues['Bezeichnung2']:= Memo1.Text;
Tabelle.Post;
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.

[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;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Memofeld in Paradox Datenbank speichern

  Alt 4. Okt 2008, 17:24
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:
// ...
      Memo1.Lines.SaveToStream(Stream);
      Stream.Position := 0;
// ...
Freundliche Grüße
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#9

Re: Memofeld in Paradox Datenbank speichern

  Alt 5. Okt 2008, 00:26
Zitat:
wie list du das Feld wieder aus ? bzw. woher weißt du, das nix drinsteht ?
ich gucke mit Paradox nach, aber da steht überall <BLOB Memo> .
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
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

Re: Memofeld in Paradox Datenbank speichern

  Alt 5. Okt 2008, 09:11
Guten Morgen...
Zitat:
ich gucke mit Paradox nach, aber da steht überall <BLOB Memo> .
...da meinst du wohl die Datenbankoberfläche. Da steht <BLOB Memo> auch wenn Daten drin sind.

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'];
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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