Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

Query... Feld nicht gefunden

  Alt 7. Okt 2007, 13:24
Datenbank: noch Paradox :-( • Zugriff über: BDE
Hallo alle..

Ich bräuchte mal jemanden, der mir die Brille putzt...

Der Ablauf:

1. Eingabe in Edit Feld... SMatch
2. Start Abfrage
Delphi-Quellcode:
procedure LSuche;
begin
  if FLieferschein.SMatch.Text = 'then exit;
  ListeComboBox;
  FLieferschein.SMatch.Enabled:= False;
  FLieferschein.ComboBox1.Enabled:= False;
  FLieferschein.BitBtn2.Enabled:= False;
  FLieferschein.BitBtn1.Enabled:= False;
  FLieferschein.BitBtn3.Enabled:= False;
  Abfrage;
  GridOptionen;
end;

procedure Abfrage;
begin
  FLieferschein.Query1.Filtered:= False;
  FLieferschein.Query1.Close;
  case FLieferschein.ComboBox1.ItemIndex of
    0: begin // Artikelnummer
          QArtikelnummer;
        end;
    1: begin // Style Name
          QStyleName;
        end;
    2: begin // Style Nummer
          QStyleNummer;
        end;
    3: begin // Lieferschein
          QLieferschein;
        end;
    4: begin // Rechnung
          QRechnung;
        end;
  end;
end;
3.SQL (Auszug...)
Delphi-Quellcode:
procedure QLieferschein;
begin
  with FLieferschein do
    begin
      Query1.SQL.Text:= 'select Artikel.Artikelnummer,Artikel.StyleName,Artikel.StyleNummer,'+
                        'Artikel.Farbe,Artikel.Grosse,Bewegung.Bewegung,Artikel.EKnetto,Bewegung.Datum,Bewegung.RE '+
                        'from Artikel,Bewegung '+
                        'where Bewegung.LS = (:Match) and Bewegung.Vorgang = (:Vorgang) '+
                        'and Artikel.Artikelnummer = Bewegung.Artikelnummer '+
                        'order by Farbe,Grosse';
      Query1.ParamByName('Match').Value:= FLieferschein.SMatch.Text;
      Query1.ParamByName('Vorgang').Value:= 'manuell';
      FLieferschein.Query1.Open;
      DbGrid1.Columns[0].Width := 120;
      DbGrid1.Columns[0].Title.Caption := 'Artikelnummer';
      DbGrid1.Columns[1].Width := 120;
      DbGrid1.Columns[1].Title.Caption := 'Style Name';
      DbGrid1.Columns[2].Width := 100;
      DbGrid1.Columns[2].Title.Caption := 'Style Nummer';
      DbGrid1.Columns[4].Width := 40;
      DbGrid1.Columns[4].Title.Caption := 'Größe';
      DbGrid1.Columns[5].Width := 40;
      DbGrid1.Columns[5].Title.Caption := 'Menge';
      DbGrid1.Columns[6].Width := 40;
      DbGrid1.Columns[6].Title.Caption := 'EK';
      DbGrid1.Columns[8].Width := 100;
      DbGrid1.Columns[8].Title.Caption := 'Rechnung';
      if Query1.RecordCount > 0 then
        begin
          BitBtn3.Enabled:= False;
          BitBtn1.Enabled:= True;
        end;
    end;
end;
4. Anzeige im DBGrid


....funktioniert ! aber:

5. nanchmal muß ich die Ergebnismenge noch filtern ( könnte man auch über SQL erledigen, fand ich aber die schnellere Lösung bei max 20 Datensätzen in der Ergebnismenge)

Delphi-Quellcode:
// Filter
procedure TFLieferschein.ComboBox2Change(Sender: TObject);
begin
  case ComboBox2.ItemIndex of
    0: begin
         Query1.Filtered:= False;
       end;
    1: begin
         if ComboBox2.Text = 'kein Lieferscheinthen
           begin
             Query1.Filter:= 'LS = '+ QuotedStr('');
             Query1.Filtered:= True;
             SMatch.SetFocus;
           end
             else
               begin
                 Query1.Filter:= 'RE = '+ QuotedStr('');
                 Query1.Filtered:= True;
                 SMatch.SetFocus;
               end;
       end;
  end;
end;
...funktioniert auch.

Das Problem:
- wenn ich die Query einmal gefiltert habe und noch einmal 'procedure QLieferschein' aufrufe erhalte ich die Meldung 'Feld LS' nicht gefunden.

- dabei ist unwichtig ob die Query bei Start der Abfrage gefiltert oder ungefiltert ist.

das Problem tritt nur bei QLieferschein auf.

... hat jemand eine Idee ?

Danke im Voraus...
  Mit Zitat antworten Zitat