Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi zeile immer überschrieben (https://www.delphipraxis.net/40989-zeile-immer-ueberschrieben.html)

Jasocul 24. Feb 2005 10:57

Re: zeile immer überschrieben
 
Das Append hängt einen "vorläufigen" Datensatz an die Tabelle an.
Leider gibt es manchmal mit der TTable-Komponente Probleme, wenn direkt nach dem Append der Focus gewechselt wird. Den genauen Hintergrund kenn ich nicht, aber das Phänomen hatte ich in einem meiner alten Programme.
Deswegen VOR dem Append, ein SetFocus auf ein Erfassungs-Feld machen.
Wenn alle Daten eingetragen sind, erst dann darfst du ein Post machen. NICHT bei einem OnClick der dbComboBox. Dafür bitte einen extra-Button machen. Zum Testen kannst du ja auch mal den TDBNavigator benutzen.

herrentor 24. Feb 2005 11:06

Re: zeile immer überschrieben
 
ich meinte auch nicht onclick bei der dbcombo sondern bei einem extra button. wie kann ich denn unterdrücken, dass der datensatz immer in den dbcombos angezeigt wird und soll der focus auf ein imaginäres feld?

Jasocul 24. Feb 2005 11:14

Re: zeile immer überschrieben
 
Zitat:

Zitat von herrentor
ich meinte auch nicht onclick bei der dbcombo sondern bei einem extra button. wie kann ich denn unterdrücken, dass der datensatz immer in den dbcombos angezeigt wird und soll der focus auf ein imaginäres feld?

Dann ist das mit Button schon korrekt.
Das mit dem Unterdrücken verstehe ich nicht ganz.

Ein Beispiel mit dem Focus-Problem:
Angenommen, du zeigst die Daten in einem DBGrid an und du bist gerade im DBGrid (Focus is dort). Dann teilst du dem Programm mit, dass ein neuer Datensatz erfasst werden soll (Append). Bis dahin funktioniert das alles noch. Jetzt klickst du eine Komponente an, in der du die neuen daten erfassen willst (z.B. DBComboBox, DBEdit,...). Dann interpretiert die TTable das als Erfassungs-Abbruch. Um das zu vermeiden musst du vor dem Append den Focus auf eines der Erfassungs-Elemente setzen. Nichts imaginäres.

Albi 24. Feb 2005 11:23

Re: zeile immer überschrieben
 
Hallo,

Zitat:

comboboxen und editfeldern in einer datenbank zu speichern, bei der ich dann die eingaben abgleichen kann. beispielsweise das keine zeile doppelt geschrieben wird. mehr will ich nicht. ich will auch nicht, dass die datensätze in meinem programm angezeigt werden.
Dann must du vor dem speichern überprüfen ob der DS schon vorhanden ist, er wenn RecordCount = 0 ist, kann der DS angelegt werden ansonsten soll der DS editiert werden. So inetwa stellst Du dir das vor?

ich habe lange nicht mehr mit Table-Kompos gearbeitest, daher mal ein Bsp. mit Query's

SQL-Code:
Select Feld From DB WHERE Feld like Edit1.Text
If Query1.RecordCount-1 = 0 Then
Begin
  //neues DS anlegen
  Query1.append;
end
else
begin
  //DS editieren
  Query1.Edit;
end;
Mit der Table Kompo sollte es mit Befehl Locate funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:52 Uhr.
Seite 2 von 2     12   

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