![]() |
Datenbank: Absolute Database • Version: ? • Zugriff über: ?
Absolute Database - Memo Text ?
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
Re: Absolute Database - Memo Text ?
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 |
Re: Absolute Database - Memo Text ?
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.
|
Re: Absolute Database - Memo Text ?
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; |
Re: Absolute Database - Memo Text ?
Vielen Dank!
Ich glaub das bringt mich schon weiter. Ist auch etwas schwierig mit den Demos von AB. |
Re: Absolute Database - Memo Text ?
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:
aufgerufen werden diese Proceduren bspw. vom KundenDialog:
//--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; //------------------------------------------------------------
Delphi-Quellcode:
Anhand dieser exemplarischen Vorgehensweise kannst dir ja deine Statements anpassen ;)
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; ... Gruss Rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 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-2025 by Thomas Breitkreuz