Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wert in Datenbank schreiben (https://www.delphipraxis.net/130405-wert-datenbank-schreiben.html)

Stocki1990 7. Mär 2009 21:19

Datenbank: Access-Datenbank • Zugriff über: Access

Wert in Datenbank schreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Servus Leute!

Gerade bin ich damit beschäftigt, ein kleines Delphi-Schulprojekt zu erstellen.
Es handelt sich hier um einen Vokabeltrainer.

Wenn man eine Vokabel richtig bzw. falsch hat, sollte dies in einer Datenbank vom Programm aus,
vermerkt werden.

Ich habe eine Prodezur erstellt, welche mir sagt, ob die eingegeben Vokabel richtig oder falsch sind,
wie ihr hier sehen könnt:

Delphi-Quellcode:
procedure TForm1.Loesungpruefen();
var
Faktor : integer;
begin
if edit1.text = Adoquery1.fieldvalues['Fremdsprache'] then
begin
img_true.visible := true;
img_false.visible := false;
Faktor := 1;
 AdoQuery1.Edit;
 Adoquery1.fieldvalues['Bewertung'] := Adoquery1.fieldvalues['Bewertung'] + Faktor;
 adoquery1.Post;
 
adoquery1.Next;
deutsch();

end
else
begin
 If Messagedlg(adoquery1.fieldvalues['Deutsch'] + ' heißt auf Englisch ' + adoquery1.fieldvalues['Fremdsprache'], mtConfirmation,[mbok], 0) = mrok then
begin
img_true.visible := false;;
img_false.visible := true;
 Faktor := -3;
 AdoQuery1.Edit;
 Adoquery1.fieldvalues['Bewertung'] := Adoquery1.fieldvalues['Bewertung'] +Faktor;
 adoquery1.Post;

adoquery1.Next;
deutsch();

end;

Ich habe diese Funktion mehrmals kontrolliert und konnte den Fehler nicht ausfindig machen.
Die Funktion will mir einfach nichts in die Datenbank schreiben.

Ich hoffe, dass ihr mir hier weiterhelfen könnt.

Danke schonmal im Voraus für eure Mühen
Christoph

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

omata 7. Mär 2009 21:36

Re: Wert in Datenbank schreiben
 
Das sieht soweit richtig aus.

Du solltest FieldByName benutzen...
Delphi-Quellcode:
procedure TForm.Loesungpruefen;
var Faktor : integer;
    Save : boolean;
begin
  Save:=false;
  if Edit1.Text = AdoQuery.FieldByName('Fremdsprache').AsString then
  begin
    img_true.visible := true;
    img_false.visible := false;
    Faktor := 1;
    Save := true;
  end
  else begin
    if Messagedlg(AdoQuery.FieldByName('Deutsch').AsString + 
                  ' heißt auf Englisch ' + 
                  AdoQuery.FieldByName('Fremdsprache').AsString,
                  mtConfirmation, [mbOK], 0) = mrok then
    begin
      img_true.visible := false;;
      img_false.visible := true;
      Faktor := -3;
      Save := true;
    end;
  end;
  if Save then
  begin
    AdoQuery.Edit;
    AdoQuery.FieldByName('Bewertung').AsInteger :=
      AdoQuery.FieldByName('Bewertung').AsInteger + Faktor;
    AdoQuery.Post;
    AdoQuery.Next;
    deutsch;
  end;
end;
Wie sehen deine Connection-Einstellungen aus?

Stocki1990 7. Mär 2009 21:42

Re: Wert in Datenbank schreiben
 
Servus Omata!

Danke für die rasche Antwort.
- Nun geht's :-D :-D :-D

Anbei noch für dich der Delphi-Code
meiner Connection-Einstellungen:

Delphi-Quellcode:
function tform1.DatenverbindungHerstellen(): boolean;
var
   Provider, DataProvider, DataSource: string;

begin
   Provider := 'MSDataShape.1';
   DataProvider := 'Microsoft.Jet.OLEDB.4.0';
   DataSource := extractfilepath(application.ExeName) + 'vokabel.mdb';

   if fileexists(DataSource) then begin
      if ADOConnection1.Connected then ADOConnection1.Close;
      ADOConnection1.ConnectionString := 'Provider=' + Provider + ';Data Provider=' + DataProvider + ';Data Source=' + DataSource;
      try
        ADOConnection1.Connected := true;
        result := true;
      except
        result := false;
      end;

   end else begin
       result := false;

   end;

end;
Danke nochmals für die rasche unkomplizierte Hilfe
Grüße
Christoph


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