AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Absolute Database - Memo Text ?
Thema durchsuchen
Ansicht
Themen-Optionen

Absolute Database - Memo Text ?

Ein Thema von Blackheart · begonnen am 3. Feb 2009 · letzter Beitrag vom 3. Feb 2009
Antwort Antwort
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#1

Absolute Database - Memo Text ?

  Alt 3. Feb 2009, 19:59
Datenbank: Absolute Database • Version: ? • Zugriff über: ?
Hallo Leute !
Ich hab ehrlich gesagt keinen Blassen von Datenbanken deshalb hab ich mir
einmal ein Beispiel aus dem net gezogen aber das hilft mir nicht wirklich weiter.
Könnte mir jemand der sich mit Absolute Database auskennt erklären wie ich zu den Edits ein Memotext speichern und auslesen kann.
Hier der Quelltext - Datei anbei.
Delphi-Quellcode:
unit Unit_main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, ABSMain, Grids, DBGrids, Mask, DBCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ABSDatabase1: TABSDatabase;
    ABSTable1: TABSTable;
    ABSQuery1: TABSQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    GroupBox1: TGroupBox;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    DBEdit15: TDBEdit;
    DBEdit16: TDBEdit;
    DBEdit17: TDBEdit;
    DBEdit18: TDBEdit;
    DBEdit19: TDBEdit;
    DBEdit20: TDBEdit;
    DBEdit21: TDBEdit;
    DBEdit22: TDBEdit;
    DBEdit23: TDBEdit;
    DBEdit24: TDBEdit;
    DBEdit25: TDBEdit;
    DBEdit26: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Button2: TButton;
    DBNavigator1: TDBNavigator;
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ABSQuery1BeforeInsert(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
  private
    { Private-Deklarationen }
    pw_ok : boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ABSQuery1.Close;
  if ABSDatabase1.Connected then ABSDatabase1.Connected := false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  groupbox1.Visible := not groupbox1.Visible;
  if groupbox1.Visible then
  begin
   Button2.Caption := 'Liste zeigen';
   DBGrid1.visible := false;
  end else
  begin
   Button2.Caption := 'Eingabe zeigen';
   DBGrid1.visible := true;
  end
end;

procedure TForm1.FormCreate(Sender: TObject);
var vorhanden : boolean;

begin
  PW_OK := false;
  DBGrid1.Visible := false;
  GroupBox1.visible := true;
  Button2.caption := 'Liste zeigen';
  ABSDatabase1.DatabaseName := 'DB'; // unique name used further to identify db
  ABSDatabase1.DatabaseFileName := ExtractFilepath(Paramstr(0))+'mydata.hp';
  if (not ABSDatabase1.Exists) then vorhanden := false
  else vorhanden := true;

 if (not vorhanden) then
 begin
   ShowMessage('Es wurde keine Datenbankdatei '+ExtractFilepath(Paramstr(0))+'mydata.hp gefunden.'+#10+
               'Neue Datei wird angelegt');
   ABSDatabase1.Password := inputbox('Passwort','erst einmal ein Passwort vergeben:','')
 end
 else
 ABSDatabase1.Password := inputbox('Passwort','Passwort:','');

 if length(ABSDatabase1.Password) < 3 then
 begin
  ShowMessage('Passwort muss mindestens 3 Zeichen enthalten');
  PW_OK := false;
 end else PW_OK := true;

 if vorhanden AND PW_OK then
 begin
  try
    ABSDatabase1.Connected := true;
  except
    ShowMessage('netter Versuch');
    if (not ABSDatabase1.Connected) then
    Application.Terminate;
  end;
 end;

 if (not vorhanden) and PW_OK then
 begin
   ABSDatabase1.CreateDatabase;
   ABSDatabase1.Connected := true;
   // Tabelle anlegen begin
  with ABSTable1 do
  begin
    Tablename := 'daten';
    Databasename := 'DB';
    with FieldDefs do
    begin
      Clear;
      Add('EmpNo',ftAutoInc,0,False);
      Add('Bezeichnung',ftString,100,False);
      Add('Firma',ftString,50,False);
      Add('Telefonnummer',ftString,50,False);
      Add('Mobilnummer',ftString,50,False);
      Add('Ort',ftString,50,False);
      Add('PLZ',ftString,50,False);
      Add('Strasse',ftString,50,False);
      Add('Postfach',ftString,50,False);
      Add('Ansprechperson',ftString,50,False);
      Add('Kontonummer',ftString,50,False);
      Add('BLZ',ftString,50,False);
      Add('Emailadresse',ftString,50,False);
      Add('Webseite',ftString,50,False);

      Add('Kundennummer',ftString,50,False);
      Add('Zugangsname',ftString,50,False);
      Add('Passwort',ftString,50,False);
      Add('Vetragsbeginn',ftDate,0,False);
      Add('Vertragsende',ftDate,0,False);
      Add('Kündigungstermin',ftDate,0,False);
      Add('gekündigt',ftDate,0,False);
      Add('Kündigungsbestätigung',ftDate,0,False);
      Add('Vertragsnummer',ftString,50,False);
      Add('Handynummer',ftString,50,False);
      Add('Kosten_monatlich',ftCurrency,0,False);
      Add('Kosten_vierteljährlich',ftCurrency,0,False);
      Add('Kosten_jährlich',ftCurrency,0,False);

    end;
  end;
  with ABSTable1 do
    if not Exists then
      CreateTable;
   // Tabelle anlegen end
 end; // if not vorhanden

 ABSQuery1.DatabaseName := 'DB';
 ABSQuery1.SQL.Text := 'select * from daten order by Bezeichnung asc';
 ABSQuery1.Open;
 ABSQuery1.ReadOnly := false;
 ABSQuery1.RequestLive := true;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.ABSQuery1BeforeInsert(DataSet: TDataSet);
begin
  if groupbox1.Visible then DBEdit1.SetFocus;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  if (not PW_OK) then close;
end;

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
 ABSQuery1.close;
 if pos('asc',ABSQuery1.SQL.Text) > 0 then
   ABSQuery1.SQL.Text := 'select * from daten order by '+Column.Title.Caption+' desc'
 else
   ABSQuery1.SQL.Text := 'select * from daten order by '+Column.Title.Caption+' asc';
 ABSQuery1.Open;
  // ShowMessage(ABSQuery1.SQL.Text);
end;

end.
Angehängte Dateien
Dateityp: zip mydata_126.zip (619,2 KB, 10x aufgerufen)
Blackheart
  Mit Zitat antworten Zitat
tomsson74

Registriert seit: 8. Jan 2008
73 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Absolute Database - Memo Text ?

  Alt 3. Feb 2009, 20:15
Ehrlich gesagt, verstehe ich Dein Anliegen nicht ganz genau.

In Deinem Beispiel gibt es in der Tabelle keine Definition eines Memo-Feldes. Oder geht es Dir grundsätzlich darum, wie man Texte in der Datenbank speichert ?

/Thomas
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Absolute Database - Memo Text ?

  Alt 3. Feb 2009, 20:30
Genau darum geht es, wie gesagt der Quelltext ist nicht von mir ich wollte nun gern wissen wie man zusätzlich einen Memotext speichert und wieder ausliesst.
Blackheart
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#4

Re: Absolute Database - Memo Text ?

  Alt 3. Feb 2009, 20:57
Moin,

für Absolute Database gibt es ein Feldtyp Memo, und diesen kann man genuso ansprechen wie alle anderen Felder auch.
Delphi-Quellcode:
  with ABSTable1 do
  begin
    Tablename := 'daten';
    Databasename := 'DB';
    with FieldDefs do
    begin
      Clear;
      Add('EmpNo',ftAutoInc,0,False);
      Add('Bezeichnung',ftString,100,False);
      Add('Firma',ftString,50,False);
...
      Add('Notizen', ftMemo, 0, false);
...
  end;
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Absolute Database - Memo Text ?

  Alt 3. Feb 2009, 21:05
Vielen Dank!
Ich glaub das bringt mich schon weiter.
Ist auch etwas schwierig mit den Demos von AB.
Blackheart
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#6

Re: Absolute Database - Memo Text ?

  Alt 3. Feb 2009, 22:05
Hier mal kurz ein Beispiel aus einem meiner Demoprojekte, wie mithilfe von SQL-Statements und Parametern ein Kundendatensatz eingefügt bzw geändert werden kann (die entsprechenden Querys Kunden_Hinzu bzw Kunden_Aendern liegen im DatenModul DMKunden):
Delphi-Quellcode:
//--NeuDatum und UpdateDatum sind hier NICHT mehr ÜbergabeParameter der Funktion/Procedure
procedure TDMKunden.Kunden_Hinzu(const aKUNR, aNAME, aSTR, aPLZ, aORT,
                                       aLAND, aNOT: String);
begin
  KundenHinzu.Close;

  //--Kommando vorbereitet?
  if not KundenHinzu.Prepared then
  begin
    KundenHinzu.SQL.Text := 'INSERT INTO Kunden (KundenNr, Datum, Name, '+
                                                         'Strasse, Plz, Ort, ' +
                                                         'Land, Notizen) ' +
                                                         'VALUES(:KUNR, :DATUM, :NAME, ' +
                                                         ' :STR, :PLZ, :ORT, '+
                                                         ' :LAND, :NOT )';

    //--ParameterTyp festlegen
    KundenHinzu.Params[0].DataType := ftString;
    KundenHinzu.Params[1].DataType := ftDateTime;
    KundenHinzu.Params[2].DataType := ftString;
    KundenHinzu.Params[3].DataType := ftString;
    KundenHinzu.Params[4].DataType := ftString;
    KundenHinzu.Params[5].DataType := ftString;
    KundenHinzu.Params[6].DataType := ftString;
    KundenHinzu.Params[7].DataType := ftMemo;
    KundenHinzu.Prepare;
  end;

  //--Parameter belegen und ausführen
  KundenHinzu.Params[0].Value := aKUNR;
  KundenHinzu.Params[1].Value := Now();
  KundenHinzu.Params[2].Value := aNAME;
  KundenHinzu.Params[3].Value := aSTR;
  KundenHinzu.Params[4].Value := aPLZ;
  KundenHinzu.Params[5].Value := aORT;
  KundenHinzu.Params[6].Value := aLAND;
  KundenHinzu.Params[7].Value := aNOT;
  KundenHinzu.ExecSQL;
end;
 //------------------------------------------------------------

procedure TDMKunden.Kunden_Aendern(
                               const aNAME, aSTR, aPLZ, aORT, aLAND, aNOT: String;
                               const aKuNr: String; aUpdate: TDateTime);
begin
  KundenAendern.Close;
  //--Kommando bereits erstellt?
  if not KundenAendern.Prepared then
    begin
      KundenAendern.SQL.Text := 'UPDATE Kunden SET Name=:NAME '+
                                                           ', Strasse=:STR'+
                                                           ', Plz=:PLZ' +
                                                           ', Ort=:ORT' +
                                                           ', Land=:LAND' +
                                                           ', Notizen=:NOT' +
                                                           ', UpDate=:UPDATE '+
                                                           'WHERE KundenNr=:KuNr ';
      //--ParameterTyp festlegen
      KundenAendern.Params[0].DataType := ftString;
      KundenAendern.Params[1].DataType := ftString;
      KundenAendern.Params[2].DataType := ftString;
      KundenAendern.Params[3].DataType := ftString;
      KundenAendern.Params[4].DataType := ftString;
      KundenAendern.Params[5].DataType := ftMemo;
      KundenAendern.Params[6].DataType := ftDateTime;
      KundenAendern.Params[7].DataType := ftString;
      KundenAendern.Prepare;
  end;

  //--jetzt die Parameter belegen und ausführen
  KundenAendern.Params[0].Value := aNAME;
  KundenAendern.Params[1].Value := aSTR;
  KundenAendern.Params[2].Value := aPLZ;
  KundenAendern.Params[3].Value := aORT;
  KundenAendern.Params[4].Value := aLAND;
  KundenAendern.Params[5].Value := aNOT;
  KundenAendern.Params[6].Value := aUPDATE; //hier wird das aktuelle Änderungsdatum eingetragen
  KundenAendern.Params[7].Value := aKUNR;
  KundenAendern.ExecSQL;
end;
 //------------------------------------------------------------
aufgerufen werden diese Proceduren bspw. vom KundenDialog:
Delphi-Quellcode:
procedure TFmKundenDialog.BtnOKClick(Sender: TObject);
var istGeandert: bool;
    updateDatum: TDateTime;
begin
...

  if not KundeNeu then
    DMKunden.Kunden_Aendern( EdName.Text,
                                  EdStrasse.Text,
                                  EdPlz.Text,
                                  EdOrt.Text,
                                  EdLand.Text,
                                  MeNotizen.Text, //<< ist eine Memofeld ;)
                                  EdKundenNr.Text,
                                  updateDatum)
  else
    DMKunden.Kunden_Hinzu(EdKundenNr.Text,
                          EdName.Text,
                                 EdStrasse.Text,
                                 EdPLZ.Text,
                                 EdOrt.Text,
                                 EdLand.Text,
                                 MeNotizen.Text);
 end;
...
Anhand dieser exemplarischen Vorgehensweise kannst dir ja deine Statements anpassen

Gruss Rainer
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:17 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