Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi delphi BDE Datenbank Abfrage Help (https://www.delphipraxis.net/135041-delphi-bde-datenbank-abfrage-help.html)

DenjoR 3. Jun 2009 16:58


delphi BDE Datenbank Abfrage Help
 
So hallo erstmal :)
Ich bin noch Delphi Neuling und plage mich gerade mit dem versuch einer abfrage ab.

Ich habe per Datenbank tutorial MYbase folgendes erstellt:

1 Datenbank mit 4 Feldern | Datum | Ansprachen | Termine | Abschluesse |

folgende abfrage möchte ich erstellen :

-wenn das Datum mit dem heutigen übereinstimmt
-dann letzten datensatz feld:ansprachen editieren
-sonst neuer Datensatz

bisher sieht das in etwa so aus:

procedure TForm2.Button1Click(Sender: TObject);
var Ansprachen1:integer;
var Datum: TDate ;
begin
Datum := Date();
ClientDataSet1.LoadFromFile('pa.xml');
ClientDataset1.last;
if ClientDataset1.FieldByName('Datum').AsString = datetoStr(Datum) then
ClientDataset1.Edit;
ClientDataset1.FieldByName('Datum').Asstring :=datetostr( date());
ClientDataset1.FieldByName('Ansprachen').Asstring := inttoStr(+3);
ClientDataset1.Post;
ClientDataSet1.SaveToFile('pa.xml', dfXML);

--------------------------------------------------------------

ClientDataSet1.LoadFromFile('pa.xml');
if ClientDataset1.FieldByName('Datum').AsString <> datetoStr(Datum) then
ClientDataset1.Append;
ClientDataset1.FieldByName('Datum').Asstring :=datetostr( date());
ClientDataset1.FieldByName('Ansprachen').Asstring := inttoStr(+5);
ClientDataset1.Post;
ClientDataSet1.SaveToFile('pa.xml', dfXML);


der untere teil muss falsch sein da ich dort ein Fehler ausgeworfen kriege.
der obere teil funktioniert in soweit das er die zahl verändert und keinen neuen Datensatz macht.

naja wäre für jeden Denkansatz sowie Programmierungshilfe dankbar

Fehlermeldung :

Im projekt test.exe ist eine Exception der Klasse EDataBaseError mit der Meldung 'ClientDataSet1:Datenmenge weder im Editiermodus -noch im einfügemodus' aufgetreten

was halt noch nicht funktioniert ist die abfrage an sich bzw kann ich sie nicht testen da

-wenn ich im oberen teil statt ClientDataset1.Edit, ClientDataset1.Append schreibe kommt die fehlermeldung
-die fehler meldung kommt auch wenn ich ClientDataset1.Edit belasse aber die if abfrage auf undlgeich ändere.
Ich fumel da jetzt schon ne ganze zeit rum komm einfach nicht auf die Lösung

MFG

denjoR

quendolineDD 3. Jun 2009 17:37

Re: delphi BDE Datenbank Abfrage Help
 
Herzlich willkommen in der DP :dp:

Zitat:

der untere teil muss falsch sein da ich dort ein Fehler ausgeworfen kriege.
Kannst du bitte die Fehlermeldung noch nennen? Das ist sehr nichtssagend.

Und wo hängt es denn nun genau?

DenjoR 3. Jun 2009 20:34

Re: delphi BDE Datenbank Abfrage Help
 
Habs Hinbekommen ;)

Sorry wenn mein erster post etwas unstrukturiert und wenig informel war

So gehts :) ganz easy

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var y,Ansprachen1:integer;
var Datum: TDate ;
var X:String;
begin
Datum := Date();
ClientDataSet1.LoadFromFile('pa.xml');
ClientDataset1.last;
X:=ClientDataset1.FieldByName('Datum').AsString;
Y:=StrtoInt(ClientDataset1.FieldByName('Ansprachen').Asstring);
label1.caption :=X;
if X <> datetoStr(date()) then ClientDataset1.Append else ClientDataset1.edit;
IF X <> datetoStr(date()) then y:=0;
ClientDataset1.FieldByName('Datum').Asstring :=datetostr( date());
ClientDataset1.FieldByName('Ansprachen').Asstring := inttoStr(y+1);
ClientDataset1.Post;
ClientDataSet1.SaveToFile('pa.xml', dfXML);
ein bischen nachdenken und pause schadet wohl nicht ^^

nochmals korrigierte version
es sollte schon ASInteger sein wenn der datensatz Feld ebenfalls Integer ist :)

Delphi-Quellcode:
procedure TForm2.Button4Click(Sender: TObject);
var y:integer;
var Datum: TDate ;
var X:String;
begin
Datum := Date();
ClientDataSet1.LoadFromFile('pa.xml');
ClientDataset1.last;
X:=ClientDataset1.FieldByName('Datum').AsString;
Y:=ClientDataset1.FieldByName('Abschluss').AsInteger;
label1.caption :=X;
if X <> datetoStr(date()) then ClientDataset1.Append else ClientDataset1.edit;
IF X <> datetoStr(date()) then y:=0;
ClientDataset1.FieldByName('Datum').AsString :=datetostr( date());
ClientDataset1.FieldByName('Abschluss').AsInteger := (y+1);
ClientDataset1.Post;
ClientDataSet1.SaveToFile('pa.xml', dfXML);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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