Ik heb het probleem dat steeds de transactie open blijft staan. Ik gebruik de IBX componenten. Ik heb een IBTransaction component waarbij de DefaultAction op taCommit staat. Dus hij zou de transactie zelf steeds automatisch moeten afsluiten (of je moet zelf specifiek aangeven het begin van een transactie zodat je meerdere acties in 1 transactie kan onderbrengen. Maar dat is nu niet het geval).
Zodra ik bijvoorbeeld een lijst vernieuw (dus een select query uitvoeren) staat de transactie gelijk weer open.
Dit gebeurt met deze code:
Deze procedure roept de FillListView aan:
Weet iemand waarom die transactie niet gelijk automatisch wordt afgesloten?
Zodra ik bijvoorbeeld een lijst vernieuw (dus een select query uitvoeren) staat de transactie gelijk weer open.
Dit gebeurt met deze 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
24
25
26
27
28
| procedure TFormArtikelEenheid.RefreshList;
var SelectedIndex: Integer;
begin
SelectedIndex := ListViewArtikelEenheid.ItemIndex;
ListViewArtikelEenheid.Clear;
FillListView;
if ListViewArtikelEenheid.Items.Count > 0 then
begin
if ListViewArtikelEenheid.Items.Count >= SelectedIndex + 1 then
begin
ListViewArtikelEenheid.Selected := ListViewArtikelEenheid.Items[SelectedIndex];
ListViewArtikelEenheid.ItemFocused := ListViewArtikelEenheid.Items[SelectedIndex];
end
else
begin
ListViewArtikelEenheid.Selected := ListViewArtikelEenheid.Items[0];
ListViewArtikelEenheid.ItemFocused := ListViewArtikelEenheid.Items[0];
end;
end
else
begin
edt_Afkorting.Text := '';
edt_Omschrijving.Text := '';
end;
UpdateToolButtons;
end; |
Deze procedure roept de FillListView aan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| procedure TFormArtikelEenheid.FillListView;
var Line: TListItem;
begin
dtModule.IBQueryArtikelEenheid2.Active := False;
with dtModule.IBQueryArtikelEenheid2.SQL do
begin
Clear;
Add(' SELECT EENHEIDID, EENHEIDAFKORTING, EENHEIDOMSCHRIJVING ' +
' FROM ARTIKELEENHEID ');
end;
try
dtModule.IBQueryArtikelEenheid2.Open;
dtModule.IBQueryArtikelEenheid2.First;
except
on E: EIBError do
begin
Exit;
end;
end;
ListViewArtikelEenheid.Items.BeginUpdate;
with dtModule.IBQueryArtikelEenheid2 do
begin
while (not EOF) do
begin
Line := ListViewArtikelEenheid.Items.Add;
Line.Caption := FieldByName('EENHEIDAFKORTING').AsString;
Line.SubItems.Add(FieldByName('EENHEIDOMSCHRIJVING').AsString);
Line.SubItems.Add(InttoStr(FieldByName('EENHEIDID').AsInteger));
Next;
end;
end;
ListViewArtikelEenheid.Items.EndUpdate;
end; |
Weet iemand waarom die transactie niet gelijk automatisch wordt afgesloten?