Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DB-Grid speichert nicht alle geänderten Datensätze (https://www.delphipraxis.net/155462-db-grid-speichert-nicht-alle-geaenderten-datensaetze.html)

DeddyH 27. Okt 2010 10:17

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
Zitat:

Zitat von pustekuchen (Beitrag 1058081)
Reicht doch eigentlich, wenn du den Post reportest.

Auch wieder wahr.

khh 27. Okt 2010 15:39

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
also nachdem ich explizit nach jedem ds-wechsel ein Post eingefügt habe, habe ich jetzt festgestellt, dass es immer die gleichen Datensätze sind, die sich nicht ändern lassen.
Aus 66 Sätzen sind es folgende 14:
Code:

ARTIKELPREISAENDERUNG_ID   ARTPREISAENDKOPF_ID   ARTIKEL_ID   ARTIKELNUMMER   BEZEICHNUNG   NETTOPREIS   BRUTTOPREIS   NETTONEU   BRUTTONEU   AENDERPROZPOS
112   26   457   100008   Mischbrot 500g   1,4018   1,5000   1,4018   1,5000   0,0000
118   26   497   100014   kl.Weissbrot   1,6821   1,8000   1,6821   1,8000   0,0000
121   26   506   100019   Holzfäller   1,8691   2,0000   1,8691   2,0000   0,0000
122   26   500   200000   Weckmehl   1,4018   1,5000   1,4018   1,5000   0,0000
124   26   489   200002   Brezeln/Groß   0,9345   1,0000   0,9345   1,0000   0,0000
125   26   462   200003   Brötchen   0,2803   0,2999   0,2803   0,2999   0,0000
132   26   464   200010   Spitzwecken   0,2803   0,2999   0,2803   0,2999   0,0000
138   26   486   300001   Donuts Black   0,6542   0,6999   0,6542   0,6999   0,0000
142   26   501   300005   Quarkteig-Hasen   0,6542   0,6999   0,6542   0,6999   0,0000
144   26   492   400001   Bisquitböden   6,5420   7,0000   6,5420   7,0000   0,0000
145   26   475   400002   Hefezopf 600g   1,6821   1,8000   1,6821   1,8000   0,0000
149   26   478   400006   Streuselkuchen/Stück   1,4018   1,5000   1,4018   1,5000   0,0000
154   26   508   400012   Nusszopf 80cm   13,0840   14,0000   13,0840   14,0000   0,0000
156   26   495   500001   MM Sahnessa Joghurt   22,6822   24,2699   22,6822   24,2699   0,0000
ich kann nicht erkennen was daran fehlerhaft ist :-(
jemand von euch?

ach ja die id -felder sind integer, die Bezeichnung char und die Beträge decimal

shmia 27. Okt 2010 17:42

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
Da werden wohl Fremdschlüssel verletzt.
Wenn z.B. das Feld "ARTIKEL_ID" in einer anderen Tabelle der Primärschlüssel ist
und eine Beziehung zwischen deiner Tabelle und der Mastertabelle besteht
und du das Feld "ARTIKEL_ID" mit einem Wert füllst zu dem es keinen Datensatz gibt,
dann sagt Firebird "Nada - iss nich" und der Datensatz bleibt unverändert.

Normalerweise sollte der Änderungs-Fehler als Exception bis zur Oberfläche durchdringen,
aber es gibt leider immer Fälle, bei denen die Fehlermeldungen aus dem DBMS verloren gehen.

khh 27. Okt 2010 17:55

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
Zitat:

Zitat von shmia (Beitrag 1058170)
Da werden wohl Fremdschlüssel verletzt.
Wenn z.B. das Feld "ARTIKEL_ID" in einer anderen Tabelle der Primärschlüssel ist
und eine Beziehung zwischen deiner Tabelle und der Mastertabelle besteht
und du das Feld "ARTIKEL_ID" mit einem Wert füllst zu dem es keinen Datensatz gibt,
dann sagt Firebird "Nada - iss nich" und der Datensatz bleibt unverändert.

Normalerweise sollte der Änderungs-Fehler als Exception bis zur Oberfläche durchdringen,
aber es gibt leider immer Fälle, bei denen die Fehlermeldungen aus dem DBMS verloren gehen.

schön wärs :-)
die Tabelle hat keinerlei Abhängigkeiten.
Die Tabelle wird aus den Tabellen Artikel und Artikelpreise gefüllt.

Die Artikelid wird nur mitgespeichert um später die Peise ändern zu können.
Soweit bin ich aber noch gar nicht.
Ausserdem habe ich nur versucht das Feld bruttoneu und ,versuchweise, die Bezeichnung zu ändern :-(

wenn ich wüsste, ok ist ein Fehler im Grid, könnte ich damit leben und das Ganze anders lösen, aber so?
ich habe versuchsweise auch andere Daten benutzt.
Da kam es unter 1000 DS ebenfalls zu x Sätzen die sich nicht ändern lassen:-(

skh 27. Okt 2010 19:10

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
Bei Mysql muss da "RequestLive auf True" stehen, vielleicht gibts da bei deiner Db was ähnliches...

Hier was aus der Hilfe:
RequestLive ist eine Anforderung an eine SELECT-Abfrage, eine aktualisierbare (live) oder schreibgeschützte Ergebnismenge von der Datenbank zu liefern. Der Wert false für RequestLive (Vorgabe) bewirkt, dass die Ergebnismenge immer schreibgeschützt ist. Es wird keine Anforderung an die Datenbank gesendet, eine aktualisierbare Ergebnismenge zurückzugeben. Der Wert true für RequestLive ist eine Anforderung an die Datenbank, eine aktualisierbare Ergebnismenge zurückzuliefern. Eine aktualisierbare Ergebnismenge kann dem Benutzer der Anwendung zur direkten Datenbearbeitung über visuelle Datensteuerelemente zur Verfügung gestellt werde

khh 29. Okt 2010 07:23

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
alsooo,
Fehler behoben.
Lag wohl an der Einstellung des Datasource.
Da war autoedit auf false gesetzt :-(

Ich danke euch

Gruss KHH

sx2008 29. Okt 2010 07:53

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
Ich glaube fast, du speicherst die Daten wirklich über das DBGrid.
Prpgrammiertechnisch ist das natürlich falsch.
Ein DBGrid ist nur dazu gedacht, dem Benutzer am Bildschirm die Daten anzuzeigen und Änderungen zu ermöglichen.
Um Daten über das Programm abzufragen, zu ändern oder einzufügen arbeitet man direkt mit dem TDataset bzw. einer Ableitung davon (TTable, TQuery, TADOQuery, TZeosQuery,...).

Also ich würde das ändern, denn du verlirst bei deinem Umweg über TDataSource und TDBGrid natürlich auch Geschwindigkeit.

khh 29. Okt 2010 08:04

AW: DB-Grid speichert nicht alle geänderten Datensätze
 
Zitat:

Zitat von sx2008 (Beitrag 1058449)
Ich glaube fast, du speicherst die Daten wirklich über das DBGrid.
Prpgrammiertechnisch ist das natürlich falsch.
Ein DBGrid ist nur dazu gedacht, dem Benutzer am Bildschirm die Daten anzuzeigen und Änderungen zu ermöglichen.
Um Daten über das Programm abzufragen, zu ändern oder einzufügen arbeitet man direkt mit dem TDataset bzw. einer Ableitung davon (TTable, TQuery, TADOQuery, TZeosQuery,...).

Also ich würde das ändern, denn du verlirst bei deinem Umweg über TDataSource und TDBGrid natürlich auch Geschwindigkeit.

Es geht tatsächlich nur darum dem Nutzer die Daten anzuzeigen und Änderung dieser Daten zu ermöglichen.
Das Programm ansonsten nutzt im HG natürlich die (Zeos)- Query ;-)

Danke dir für deine Ausführung

Gruss KHH


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

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-2025 by Thomas Breitkreuz