Ik ben vandaag op volgende 'anomalie' gebotst; misschien weet één van jullie de oorzaak hiervan en misschien wel de oplossing...
Ik heb een detailscherm met een aantal TDBEdit controls, een OK-knop, een Annuleren knop en een Toepassen-knop.
De OK-knop bewaart de gegevens en sluit het detailscherm, de toepassenknop bewaart de gegevens maar laat het detailscherm open staan.
Alle TDBEdit controls zijn gelinkt aan een TQuery, waarvan de RequestLive property op True staat. De query ziet er als volgt uit:
Achter m'n toepassen-knop zit volgende code:
Wat is het probleem nu: Als ik een nieuw record toevoeg en ik klik op 'Toepassen', dan wordt de data gepost naar de databank. Tot zover geen probleem. Het scherm blijft dus openstaan en de gegevens die ik ingebracht heb, blijven op het detailscherm zichtbaar. Als ik nu terug gegevens ga wijzigen van dit net aangemaakte record, en ik klik op toepassen, dan zijn m'n gegevens weggeschreven maar is m'n dataset-cursor veranderd, maw, de gegevens zijn niet meer zichtbaar in mijn scherm, er is een ander [nieuw, leeg] record actief gemaakt.
Als ik bovenstaande handeling toepas op een bestaand record (dus, een bestaand record wijzigen), dan werkt alles wel perfect.
Iemand die ook al eens op dit probleem gebotst heeft? En zoja, hoe heb je het aangepakt?
Ik heb een detailscherm met een aantal TDBEdit controls, een OK-knop, een Annuleren knop en een Toepassen-knop.
De OK-knop bewaart de gegevens en sluit het detailscherm, de toepassenknop bewaart de gegevens maar laat het detailscherm open staan.
Alle TDBEdit controls zijn gelinkt aan een TQuery, waarvan de RequestLive property op True staat. De query ziet er als volgt uit:
code:
1
| SELECT * FROM tblPatient WHERE PatientId = ? |
Achter m'n toepassen-knop zit volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| procedure TfrmDetPatient.ApplyButtonClick(Sender : TObject)
begin
try
dmStd.dbStd.StartTransaction();
if PrimKey = -1 then begin
PrimKey := MaakNieuweSleutel(qryNewKey);
qryRecord.FieldByName('PatientId').AsInteger := PrimKey;
end;
qryRecord.Post();
dmStd.dbStd.Commit();
ApplyButton.Enabled := False;
except
on EDatabaseError do begin
dmStd.dbStd.Rollback();
MessageDlg(...);
Abort();
end;
end;
end; |
Wat is het probleem nu: Als ik een nieuw record toevoeg en ik klik op 'Toepassen', dan wordt de data gepost naar de databank. Tot zover geen probleem. Het scherm blijft dus openstaan en de gegevens die ik ingebracht heb, blijven op het detailscherm zichtbaar. Als ik nu terug gegevens ga wijzigen van dit net aangemaakte record, en ik klik op toepassen, dan zijn m'n gegevens weggeschreven maar is m'n dataset-cursor veranderd, maw, de gegevens zijn niet meer zichtbaar in mijn scherm, er is een ander [nieuw, leeg] record actief gemaakt.
Als ik bovenstaande handeling toepas op een bestaand record (dus, een bestaand record wijzigen), dan werkt alles wel perfect.
Iemand die ook al eens op dit probleem gebotst heeft? En zoja, hoe heb je het aangepakt?
https://fgheysels.github.io/