AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid bei BDS2006 verhält sich anders als unter D5 ?
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid bei BDS2006 verhält sich anders als unter D5 ?

Ein Thema von ConstantGardener · begonnen am 12. Jan 2008 · letzter Beitrag vom 12. Jan 2008
Antwort Antwort
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
375 Beiträge
 
Delphi 10.4 Sydney
 
#1

DBGrid bei BDS2006 verhält sich anders als unter D5 ?

  Alt 12. Jan 2008, 17:37
Datenbank: Paradox / Nexus • Zugriff über: BDE / Nexus Embedded Server
Hallo Leute,

ich hab hier ein Problem bei dem ich nicht so wirklich weiterkomme. Die Suche in der DP hat auch nichts verwertbares gebracht. Vielleicht hat jemand ne Idee ??

zum Problem :

Bei einer bestehenden Software welche ursprünglich mal mit D5 entwickelt wurde kommt es nach der Umstellung auf BDS 2006 zu Fehlern in einem DBGrid. Der Quellcode wurde nur auf BDS2006 angepasst. Der Zugriff erfolgt nach wie vor über die BDE.
Auf der linken Seite hab ich ein DBGrid mit 3 Spalten / Read only zum Anzeigen und auswählen einzelner Datensätze. Die Spalte Termin gehört zum Primärschlüssel, die 2. Spalte wird berechnet (Termin Ende), Bezeichnung ist ein VarChar-Feld. Auf der rechten Seite habe ich verschieden Controls zum ändern anderer Daten des Datensatzes (verschiedene EditControls, DBComboboxen usw.)
Wenn ich Daten in den Controls ändere zeigt der Indikator des DBGrid an das er im Edit-Modus ist. Wechsle ich jetzt in einen anderen Datensatz werden die Daten korrekt übernommen. Klicke ich im DBGrid nach Änderung von Daten aber auf keinen Datensatz (der freie Bereich unter den Datensätzen) löscht er mir das Feld Termin (NULL), alle anderen Daten bleiben erhalten und sind in der Datenbank (=dsBrowse).

Das kuriose ist, daß unter D5 diese Probleme nicht auftauchen. Erst bei BDS 2006 tritt der Fehler auf. An der BDE kanns eigentlich auch nicht liegen da ich die Anwendung komplett auf NEXUS umgestellt habe und der Fehler dort genauso auftritt. Ich hab auch schon sämtliche Events der Datasourcen und Querys lahmgelegt. Gleiches Verhalten.

Ist so ein Fehler vom DBGrid bekannt ?

Irgendwelche anderen Ideen ??
Andreas Schachtner
  Mit Zitat antworten Zitat
marabu

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

Re: DBGrid bei BDS2006 verhält sich anders als unter D5 ?

  Alt 12. Jan 2008, 18:49
Hallo,

ich kann dir berichten, dass bei D7 ein Klicken in den freien Bereich des Grids keine Speicheraktion auslöst. Wenn du also bei D5 und D2006 unterschiedliches Verhalten beobachtest, so könntest du vielleicht durch das Abfangen des Events OnMouseUp() ein Gleichverhalten sicher stellen:

Delphi-Quellcode:
procedure TDemoForm.DBGridMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  cell: TGridCoord;
begin
  with Sender as TDBGrid do
    cell := MouseCoord(X, Y);

  // mouse click below last record
  if cell.X + cell.Y < 0 then
  begin
    // ...
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
375 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: DBGrid bei BDS2006 verhält sich anders als unter D5 ?

  Alt 12. Jan 2008, 19:05
Hallo Marabu,

danke für Deine schnelle Antwort. Ich habe das Problem mal in ein kleines Testprojekt gepackt (..ich dachte ich bin zu blöd) und dort kann ich das Problem eindeutig nachstellen. Die Methode im MouseUp des DBGrid greift leider zu spät. Der Wert wird gelöscht. Dabei wird der Wert des DBGrid (..und das entsprechende Feld) gelöscht welcher zuletzt im Grid markiert war. Im Programm war das das erste Feld (Termin) da ich RowSelect auf true hatte.
Wie gesagt tritt das nur unter 2006 auf, D5 ändert mir nichts an den Daten.

mfg ConstantGardener
Andreas Schachtner
  Mit Zitat antworten Zitat
marabu

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

Re: DBGrid bei BDS2006 verhält sich anders als unter D5 ?

  Alt 12. Jan 2008, 19:21
Du hast doch die Quell-Codes der Komponente TDBGrid - vielleicht kannst du mit WinMerge oder etwas ähnlichem einen Unterschied in der Implementierung lokalisieren.

Auch eine Suche in der CodeGear Quality Central ist bestimmt nicht verkehrt.
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
375 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: DBGrid bei BDS2006 verhält sich anders als unter D5 ?

  Alt 12. Jan 2008, 19:32
@Marabu : Ja, ich mach mich mal auf in die Tiefen der VCL. Ich dachte Du hast evtl. den Code im Kopf. Danke erstmal.

[Galgenhumor on]
Was mich wundert ist, daß noch niemand außer mir hier diesen Fehler festgestellt hat. Meine Kunden haben ihn sofort gefunden.
[/Galgenhumor off]

[edit]
...und da ist er wieder 8) mit einem Workaround für das Problem.


Da wie oben schon geschrieben MouseUp und MouseDown zu spät kommen habe ich mal

Delphi-Quellcode:
procedure TForm_Test.DBGrid1Enter(Sender: TObject);
begin
 DBGrid1.DataSource.DataSet.CheckBrowseMode;
end;
probiert. Und siehe da, es funzt. Ob das jetzt aber der Weißheit letzter Schluß ist ???

mfg Constant Gardener
Andreas Schachtner
  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 18:22 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