AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTable)
Thema durchsuchen
Ansicht
Themen-Optionen

Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTable)

Offene Frage von "wk2001"
Ein Thema von wk2001 · begonnen am 11. Jul 2007 · letzter Beitrag vom 12. Jul 2007
Antwort Antwort
wk2001

Registriert seit: 13. Jan 2003
5 Beiträge
 
Delphi 6 Enterprise
 
#1

Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTable)

  Alt 11. Jul 2007, 16:21
Datenbank: Paradox • Version: 7 • Zugriff über: TTable
Hallo,

ich habe folgendes Problem: Ich habe ein Formular und einige TEdit Felder. Auf der Form habe ich eine TTable Komponente, bei der ich die TableName-Eigenschaft auf die vorher mit dem DB-Editor erstellte Paradox7-Tabelle gesetzt habe. Nun will ich manuell die eingegeben TEdit-Felder in die Tabelle speichern. Das mache ich so:

Delphi-Quellcode:
  Table1.Active := True;
  Table1.Insert;
  Table1.FieldValues['ArtNr'] := edtArtNr.text;
  Table1.FieldValues['Nettopreis'] := edtPreisBrutto.text;
  Table1.Post;
Dies funktioniert aber nicht, es wird nichts in die Tabelle eingetragen...

Ich benutze Delphi 6.


Kann mir jemand helfen?
  Mit Zitat antworten Zitat
Horu98716

Registriert seit: 5. Jul 2007
9 Beiträge
 
Delphi 2 Client/Server
 
#2

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 11. Jul 2007, 17:48
Hallo,

der Code ist syntaktisch und sachlich richtig. Habe das schon 100 mal so gemacht !
Es kann evtl. sein, das irgendetwas mit den Spaltennamen nicht stimmt.(groß-klein-Schreibung etc.)

habe mal testweise auf table1 die Tabelle animals Datenbankname : dbdemos

( diese Tabelle sollte bei jeder Installation dabei sein)

In dieser Tabelle gibt es eine Spalte 'NAME'

auf das onClick-Ereignis eines Buttons habe ich die 3 Zeilen testweise eingegeben:



Table1.Insert;
Table1.FieldValues['NAME'] := Edit1.text;
Table1.Post;

Der eingebene Name des Editfelds wird problemlos in die Tabelle eingetragen!
Arbeite mit D7. Mit D6 sollte es aber genauso gehen!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 11. Jul 2007, 18:13
Zitat von Horu98716:
Hallo,

der Code ist syntaktisch und sachlich richtig. Habe das schon 100 mal so gemacht !
Es kann evtl. sein, das irgendetwas mit den Spaltennamen nicht stimmt.(groß-klein-Schreibung etc.)

habe mal testweise auf table1 die Tabelle animals Datenbankname : dbdemos

( diese Tabelle sollte bei jeder Installation dabei sein)

In dieser Tabelle gibt es eine Spalte 'NAME'

auf das onClick-Ereignis eines Buttons habe ich die 3 Zeilen testweise eingegeben:



Table1.Insert;
Table1.FieldValues['NAME'] := Edit1.text;
Table1.Post;

Der eingebene Name des Editfelds wird problemlos in die Tabelle eingetragen!
Arbeite mit D7. Mit D6 sollte es aber genauso gehen!
Wir haben wieder ein Cache-Problem
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 11. Jul 2007, 20:00
Hallo,

also ich hatte damals immer

Delphi-Quellcode:
Table.Append;
Table.FieldByName('bla').AsString:= Edit_Bla;
Table.Post;

DbiSaveChanges(Table.Handle);
gemacht
also kein Insert


Heiko
Heiko
  Mit Zitat antworten Zitat
marabu

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

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 11. Jul 2007, 20:30
Hallo wk2001,

wenn kein Fehler gemeldet wird, dann sollte der Datensatz eingetragen worden sein. Wenn die Table1 allerdings Detail-Tabelle in einer Master-Detail-Beziehung ist oder ein Filter gesetzt wurde, dann wird der Datensatz nicht angezeigt, obwohl er gespeichert wurde. Wenn die Kontrollanzeige über eine andere Dataset-Komponente als Table1 erfolgt, dann muss diese Komponente per Refresh auf den neuen Datensatz aufmerksam gemacht werden.

Wie hast du denn festgestellt, dass dein Code nicht funktioniert?
Hast du den Datensatz mal im Database-Desktop gesucht?

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#6

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 11. Jul 2007, 21:18
Hallo...

vieleicht ist es ja einfacher...
Delphi-Quellcode:
Table1.Active := True;
  Table1.Insert;
  Table1.FieldValues['ArtNr'] := edtArtNr.text;
  Table1.FieldValues['Nettopreis'] := edtPreisBrutto.text;
  Table1.Post;
dein Feld in der Tabelle heißt ' Nettopreis ' ... dein EditFeld 'edtPreisBrutto'...

kann es sein, daß du zwar in dein Nettopreisfeld eine Eingabe machst aber dein Bruttopreisfeld (was u.U. noch leer ist ) in die Tabelle eingetragen wird und du dich wunderst, daß der eingetragene Wert nicht angekommen ist ?

manchmal sieht man den Wald vor Bäumen nicht....
  Mit Zitat antworten Zitat
wk2001

Registriert seit: 13. Jan 2003
5 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 11. Jul 2007, 22:34
Danke erstmal für eure Antworten, nun habe ich folgendes seltsame Verhalten (hatte ich vorher sicher auch, nur nicht bemerkt).

Wenn ich den Button klicke, der die TEdit-Felder in die Tabelle eintragen soll, macht er das wohl. Aber trotz diverser Refreshs, Setzen der Active-Eigenschaft auf False und dann wieder auf True aktualisiert er zur Laufzeit nicht die Datensätze (dafür habe ich einen DBGrid)!

Wenn ich nun das Programm beende und in der Delphi IDE bei der TTable Komponente, mit der der DBGrid verbunden ist, die Eigenschaft Active auf False setze und anschließend wieder auf True, sind auf einmal die hinzugefügten Datensätze da!

Irgendwo habe ich wohl etwas nicht beachtet... Habt ihr eine Ahnung, was es sein könnte?

@marabu: ich habe keine master-detail beziehungen, sondern wie du sagtest, 2 forms, auf der einen habe ich den Grid mit eigener TTable-komponente zur kontrolle. und einen button, der eine zweite form aufmacht, auf welcher eine weitere TTable-Kompo ist und die besagten tedit-felder. ich mache aus dieser zweiten form auch einen refresh, aber er zeigt es dennoch nicht an..

@haentschman: danke für den hinweis das ist ein bug, aber hat mit der funktion nichts zu tun, weil beide felder benutzt werden...


Hier meine komplette button-click methode:
Delphi-Quellcode:
procedure TfrmEditArt.Button1Click(Sender: TObject);
begin
  Table1.Active := True;
  Table1.Append;

  Table1.FieldValues['ArtNr'] := edtArtNr.text;
  Table1.FieldValues['ArtBez1'] := edtArtBez1.text;
  Table1.FieldValues['ArtBez2'] := edtArtBez2.text;
  Table1.FieldValues['MwSt'] := FloatToStr(mwst);
  Table1.FieldValues['Nettopreis'] := edtPreisNetto.text;

  Table1.Post;
  Table1.Refresh;
  Table1.Active := false;

  frmMain.Table1.Active := false;
  frmMain.Table1.Active := true;
  frmMain.Table1.Refresh;
end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 12. Jul 2007, 08:41
Hallo,

aha,

das hast du so nicht geschrieben !
Dir fehlt nach dem Post das besagte DbiSaveChanges(Table1.Handle),
danach das frm1. close / open (über dein Active).

Das ist zwar normalerweise nur notwendig im Netz,
vielleicht ist das aber auch dein Problem.

Falls das immer noch nicht klappt,

frmMain.Table1.DisableControls;
frmMain.Table1.EnableControls;

Das DbiSaveChanges muss aber auf jeden Fall rein.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#9

Re: Manuelles Speichern v. Daten in Paradox-Tabelle (mit TTa

  Alt 12. Jul 2007, 10:48
Hallo...

wieso benutzt Du 2 TTable Komponenten ?

es reicht eine...

MainForm:
- TTable 'Table1' ( DatabaseName / TableName auf File setzen )
- TDatasource 'Datasource1' ( Datasource auf Tabelle Table1 setzen )

Form2:
- DbGrid 'DbGrid1' ( Datasource auf Datasource1 setzen )

Edits auf Form1 wie gehabt...
Code wie gehabt...

Delphi-Quellcode:
procedure TfrmEditArt.Button1Click(Sender: TObject);
begin
  Table1.Append;

  Table1.FieldValues['ArtNr'] := edtArtNr.text;
  Table1.FieldValues['ArtBez1'] := edtArtBez1.text;
  Table1.FieldValues['ArtBez2'] := edtArtBez2.text;
  Table1.FieldValues['MwSt'] := FloatToStr(mwst);
  Table1.FieldValues['Nettopreis'] := edtPreisNetto.text;

  Table1.Post;
end;
...das einzige: beim Start des Programmes Table1.Active:= True, beim Beenden False.
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  Table1.Active:= True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Table1.Active:= False;
end;

Das ganze Active:= True / False und Refresh kannst du dir schenken.

durch Post wird automatisch Refresh aufgerufen....


Ich denke, das das Durcheinander zustande kommt wegen der 2 Tabellenkomponenten, welche noch auf das gleiche File verbunden sind.
  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 03:43 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