Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenmenge geschlossen (https://www.delphipraxis.net/195533-datenmenge-geschlossen.html)

Luca Haas 7. Mär 2018 15:30

Datenbank: MSSQL • Version: ? • Zugriff über: TADO Query

Datenmenge geschlossen
 
Hi Luete, habe ein Problem mit einer Funktion, mit der ich einen Datensatz oder eine Teilmenge (alle Daten die nach Filterung in ReisekostenForm.DBGrid sind) in meine normale Form übergeben möchte. Diese sieht soweit so aus
Delphi-Quellcode:
procedure TReisekostenForm.SearchBtnClick(Sender: TObject);
var
  SucheReisekostenForm: TSucheReisekostenForm;
begin
  try
    SucheReisekostenForm := TSucheReisekostenForm.Create(self);
    begin
      SucheReisekostenForm.ShowModal();
      begin
        if gvarStatus = 1 then // für einen Datensatz
          OpenParamQuerySQL(ReisekostenQuery, 'SELECT * FROM Reisekosten WHERE ID = :ID AND MANr = :MANr ORDER BY ID ASC', ['ID', 'MANr'], [SucheReisekostenForm.ReisekostenQuery.FieldByName('ID').AsInteger, SucheReisekostenForm.ReisekostenQuery.FieldByName('MANr').AsInteger]);
        if gvarStatus = 2 then // für eine Teilmenge
          OpenParamQuerySQL(ReisekostenQuery, SucheReisekostenForm.QBuilder.SQL, SucheReisekostenForm.PV);
        if TeilmengeOffen = 1 then
          TeilMengeBtn1.Enabled := true;
      end;
    end;
  finally
    SucheReisekostenForm.Release();
  end;
end;
Ich bekomme allerdings die Fehlermeldung ReisekostenQuery: Operation bei geschlossener Datenmenge nicht ausführbar, ich weiß aber nicht was ich ändern muss... Der Fehler tritt in den beiden Zeilen unter der Abfrage zu gvarStatus auf.

TiGü 7. Mär 2018 15:37

AW: Datenmenge geschlossen
 
Wie ist es denn so?

Delphi-Quellcode:
procedure TReisekostenForm.SearchBtnClick(Sender: TObject);
var
  SucheReisekostenForm: TSucheReisekostenForm;
begin
  try
    SucheReisekostenForm := TSucheReisekostenForm.Create(self);
    begin
      SucheReisekostenForm.ShowModal();
      begin
        ReisekostenQuery.Open;
        SucheReisekostenForm.ReisekostenQuery.Open;

        if gvarStatus = 1 then // für einen Datensatz
          OpenParamQuerySQL(ReisekostenQuery, 'SELECT * FROM Reisekosten WHERE ID = :ID AND MANr = :MANr ORDER BY ID ASC', ['ID', 'MANr'], [SucheReisekostenForm.ReisekostenQuery.FieldByName('ID').AsInteger, SucheReisekostenForm.ReisekostenQuery.FieldByName('MANr').AsInteger]);
        if gvarStatus = 2 then // für eine Teilmenge
          OpenParamQuerySQL(ReisekostenQuery, SucheReisekostenForm.QBuilder.SQL, SucheReisekostenForm.PV);
        if TeilmengeOffen = 1 then
          TeilMengeBtn1.Enabled := true;

        ReisekostenQuery.Close;
        SucheReisekostenForm.ReisekostenQuery.Close;
      end;
    end;
  finally
    SucheReisekostenForm.Release();
  end;
end;

Luca Haas 7. Mär 2018 15:42

AW: Datenmenge geschlossen
 
Ne so bekomme ich leider die selbe Fehlermeldung :?

HolgerX 7. Mär 2018 16:56

AW: Datenmenge geschlossen
 
Hmm..


Wie sieht denn dein FormClose von TSucheReisekostenForm aus?
Wird dort eventuell die Datenmenge geschlossen?

Wenn Ja, dann passt die Fehlermeldung ;)

hoika 7. Mär 2018 19:19

AW: Datenmenge geschlossen
 
Hallo,
Delphi-Quellcode:
ReisekostenQuery.Open; // wieso hier schon das Open?
SucheReisekostenForm.ReisekostenQuery.Open; // sollte diese Query nicht noch offen sein?

if gvarStatus = 1 then // für einen Datensatz
          OpenParamQuerySQL(ReisekostenQuery, 'SELECT * FROM Reisekosten WHERE ID = :ID AND MANr = :MANr ORDER BY ID ASC', ['ID', 'MANr'], [SucheReisekostenForm.ReisekostenQuery.FieldByName('ID').AsInteger, SucheReisekostenForm.ReisekostenQuery.FieldByName('MANr').AsInteger]);
bitte lokale Variablen verwenden
SucheReisekostenForm.ReisekostenQuery.FieldByName( 'ID').AsInteger -> Id: Integer;
SucheReisekostenForm.ReisekostenQuery.FieldByName( 'MANr').AsInteger -> MANr: Integer;

Was konkret macht OpenParamQuerySQL ?

PS:
Die lokalen Variablen dienen einerseits der besseren Übersicht.
Ausserdem weißt Du dann genau, wo genau die Fehlermeldung kommt.

Luca Haas 9. Mär 2018 08:13

AW: Datenmenge geschlossen
 
Zu erst einmal tut es mir leid, dass ich gestern nicht geantwortet habe, ich war in der Berufsschule und hatte diesen Thread ein wenig vergessen :gruebel:

@HolgerX Ich habe nichts im FormClose was die entsprechenden Codezeilen beeinflussen sollte.

@hoika Habe die beiden zu lokalen Variablen geändert, hat allerdings auch nicht geholfen.
OpenParamQuerySQL benutze ich um meine Query mit den entsprechenden Parametern, welche in der eckigen Klammer definiert sind, zu öffnen

Luca Haas 9. Mär 2018 08:27

AW: Datenmenge geschlossen
 
Okay ich habe den Fehler gefunden, ich habe in einer anderen Prozedur Mist gebaut was sich auf die Codestelle ausgewirkt hat.

Danke für eure Hilfe.:thumb:

haentschman 9. Mär 2018 09:59

AW: Datenmenge geschlossen
 
Moin...:P
Zitat:

ich habe in einer anderen Prozedur Mist gebaut was sich auf die Codestelle ausgewirkt hat
...typischer Layer8 Fehler. :zwinker: ...oder https://en.wiktionary.org/wiki/PEBCAK :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 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