AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Die Zeilen eines TMemo in die Datenbank (Tabelle) speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Die Zeilen eines TMemo in die Datenbank (Tabelle) speichern

Ein Thema von LOMBI · begonnen am 7. Sep 2007 · letzter Beitrag vom 21. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
LOMBI
(Gast)

n/a Beiträge
 
#1

Die Zeilen eines TMemo in die Datenbank (Tabelle) speichern

  Alt 7. Sep 2007, 20:31
Datenbank: ABS-DB • Version: 5.12 • Zugriff über: ABSQuery, DataSource
Seit einiger Zeit versuche ich die Einträge eines TMemos zeilenweise in die ABSTabelle zu speichern, aber ohne Erfolg:

Delphi-Quellcode:
procedure TDemoForm.BtnSpeichernClick(Sender: TObject);
begin
  with DatenModel, QueryKTxt do
  begin
  Append;
  FieldByName('Zeile1').AsString := Memo1.Lines[0];
  ...
  Post;
   end;
end;
Über Hilfe würde ich mich sehr freuen!

Gruß
Lombi
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 7. Sep 2007, 20:54
Kommt ein Fehler?
Markus Kinzler
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#3

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 10:39
Nein das nicht, aber es wird nichts in die Tabelle gespeichert.
  Mit Zitat antworten Zitat
marabu

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

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 11:34
Hallo Lombi,

wenn kein Fehler kommt, dann könnte ich mir vorstellen, dass sehr wohl etwas in der Tabelle gespeichert wurde. Du hast allerdings kein Schlüsselfeld gefüllt, so dass du den Datensatz nicht an der erwarteten Stelle findest.

Die Zeilen eines Memos würde ich nicht unbedingt auf einzelne Felder eines Datensatzes abbilden wollen. Flexibler ist es, wenn der Inhalt gleich in einem Memo-Feld (ABS unterstützt diese Form eines BLOB-Feldes bestimmt) gespeichert wird. Oder, wenn ein BLOB-Feld nicht zur Diskussion steht, dann in einer Detailtabelle TEXTE (ID, ZEILE).

Beispiele für das Ansprechen von Blob-Feldern aus Delphi heraus findest du in der ABS-Hilfe unter dem Indexeintrag BLOB.

Freundliche Grüße
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#5

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 11:56
Hallo marabu,

genauso ist es! Nach Änderungen werden jetzt die Memozeilen
in die Tabelle geschrieben, jedoch nicht in die dafür vorgese-
henen Schlüsselfelder von Detailtabelle TxtNr 1, Zeile1, ...

Delphi-Quellcode:
...
  if Locate('TxtNr', 1, []) then
    begin
      Append;
      FieldByName('Zeile1').AsString := Memo1.Lines[0];
      FieldByName('Zeile2').AsString := Memo1.Lines[1];
       ...
      Post;
Diese Kurztexte sollen später in Belegen erscheinen.
Also sinnvoller, die ABS auf den Feldtyp Memo umstellen
und eine .txt-Datei verwenden?

Grüße
  Mit Zitat antworten Zitat
marabu

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

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 12:05
Bitte nicht einfach umstellen.

Beschreibe erstmal, welche Bedeutung diese Texte haben.

Sind das Textbausteine, die du verschlüsseln willst um sie über einen Auswahlmechanismus bei der nächsten Eingabe anbieten zu können?

Kannst du ein Beispiel geben?
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#7

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 12:37
Nein, verschlüsseln brauche ich diese Textbausteine nicht.
Diese sollen bei einer Belegerfassung am Anfang und Ende
mit TextNr angezeigt werden, vielleicht sogar wählbar
mittels einer ComboBox.

Text Nr. 1 Rechnung -Anfang-
MemoText (Zeile1, Zeile2, ...)

Text Nr. 2 Rechnung -Ende-
MemoText (Zeile1, Zeile, ....

...
  Mit Zitat antworten Zitat
marabu

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

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 13:09
Es geht also um Standard-Textbausteine? Dann würde ich sie als MEMO (BLOB) speichern.

Mit "Verschlüsseln" bezeichne ich im Datenbankkontext die Speicherung einer Information zusammen mit einem Schlüssel, so dass man über diesen Schlüssel wieder an die Information kommt - also eine Lookup-Table.
  Mit Zitat antworten Zitat
LOMBI
(Gast)

n/a Beiträge
 
#9

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 13:54
Ja um Standard-Textbausteine.
Habe den ABS-Feldtyp auf "Memo" geändert.

Wie bitte bekomme ich jetzt die Einträge (Zeile1, Zeile2...) in die
richtigen Schlüsselfelder von TxtNr 1?
  Mit Zitat antworten Zitat
marabu

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

Re: Die Zeilen eines TMemo in die Datenbank (Tabelle) speich

  Alt 8. Sep 2007, 14:38
Nehmen wir mal du hättest eine Tabelle TBS: ID, NAME, TEXT - dann ist ID der automatisch vergebene Primärschlüssel, NAME eine kurze Identifikation zur Benutzerauswahl und TEXT der vollständige Textbaustein. In Schlüsselfelder schreibst du also gar nichts und auch das zeilenweise Speichern unterbleibt.

Zitat von marabu:
... Beispiele für das Ansprechen von Blob-Feldern aus Delphi heraus findest du in der ABS-Hilfe unter dem Indexeintrag BLOB...
Der Code muss zwar noch ein wenig an deine Bedürfnisse angepasst werden, aber er zeigt schon die wesentlichen Dinge:

Aus der ABS Online Hilfe
Delphi-Quellcode:
procedure TForm1.btLoadClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TABSBlobStream;
begin
  ABSTable1.Edit;
  try
    FileStream := TFileStream.Create('Comments.txt',fmOpenRead or fmShareDenyNone);
    BlobStream := ABSTable1.CreateBlobStream(ABSTable1.FieldByName('Comments'),bmWrite);
    BlobStream.CopyFrom(FileStream,FileStream.Size);
    FileStream.Free;
    BlobStream.Free;
    ABSTable1.Post;
  except
    ABSTable1.Cancel;
    raise;
  end;
end;

Der Trick mit dem BlobStream funktioniert mit TField, aber auch mit TParameter. Im Beispiel liest ein Stream aus einem anderen. Du hast deinen Textbaustein in einem TMemo erfasst, also würde ich es umdrehen und mit Memo.Lines.SaveToStream() in den BlobStream schreiben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:29 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