Einzelnen Beitrag anzeigen

stonimahoni

Registriert seit: 12. Okt 2004
146 Beiträge
 
Delphi 7 Professional
 
#5

Re: problem mit anzeige und auswahl einer combobox

  Alt 14. Okt 2004, 08:47
morgen

hier mein versprochener code mit dem ich mein prob gelöst habe ( waren nur minimal änderungen nötig )

Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Aufklappen der Combobox um alle Kunden anzeigen zu lassen
////////////////////////////////////////////////////////////////////////////////
procedure TFormAuftrag.ComboBox1DropDown(Sender: TObject);
var name: string;
    leerzeichen: string;
    vorname: string;
    ort: string;
    kundennr: Longint;
begin
   // die liste wird geleert, zumal ansonsten dieselben datensätze immer angehängt werden
   // bei jedem neuaufklappen
      ComboBox1.Items.Clear;
   // Kennzeichen 3 bedeutet die DropDown Liste wurde geöffnet
   kennzeichen := 3;
   kundensuch(kennzeichen);
   if (ComboBox1.Text <> '') or (ComboBox1.Text = '') then
   begin
     //Liste mit Werten füllen
     while not FormKunden.ADOQueryKunden.Eof do
     begin
        leerzeichen := ' ';
        // Die Felder müssen vor der Zuweisung geprüft werden, ob hier auch ein
        // Eintrag in der Datenbank vorliegt.
        kundennr := FormKunden.ADOQueryKunden.FieldValues['kunden_nummer'];
        name := FormKunden.ADOQueryKunden.FieldValues['name'];
        vorname := FormKunden.ADOQueryKunden.FieldValues['vorname'];
        if(FormKunden.ADOQueryKunden.FieldValues['ort'] <> NULL) then
        begin
          ort := FormKunden.ADOQueryKunden.FieldValues['ort'];
        end;
        gesamt:= IntToStr(kundennr) + leerzeichen + name + leerzeichen + vorname;
        if ort <> 'then
        begin
          gesamt:= gesamt +leerzeichen + ort;
        end;
      ComboBox1.Items.Add(gesamt);
      FormKunden.ADOQueryKunden.Next;
     end;
   end;
end;


////////////////////////////////////////////////////////////////////////////////
// Auswahl innerhalb der Combobox
////////////////////////////////////////////////////////////////////////////////
procedure TFormAuftrag.ComboBox1Select(Sender: TObject);
var i: integer;
    ende: boolean;
begin
   // Kennzeichen 1 bedeutet, es wurde eine Auswahl aus der Liste getroffen
   kennzeichen := 1;
   ende := false;
   suchnr := '';
   i:= 0;
  // Nachdem der Benutzer einen Eintrag aus der Liste gewählt hat, soll dieser natürlich
  // vorgeblendet werden. Dazu muss dass ausgewählte Feld bis zum Namen abgeschnitten
  // werden und erneut eine Suche erfolgen.
  // Ausgewählter Eintrag zuweisen
  gesamt := ComboBox1.Items[ComboBox1.ItemIndex];
  while not ende do
  begin
     i:= i + 1;
     // Zeichen nacheinander dem Suchnamen zuweisen
     if (gesamt[i] <> ' ') and not ende then
     begin
       // in dem Fall ist der Suchname die Kundennummer
       suchnr := suchnr + gesamt[i];
     end
     else
     begin
       ende := true;
     end;
  end;
  kundensuch(kennzeichen);
  ComboBox1.Clear;
end;


////////////////////////////////////////////////////////////////////////////////
// Kundenselektion
////////////////////////////////////////////////////////////////////////////////
function TFormAuftrag.kundensuch(var kennzeichen: integer): integer;
begin
   FormKunden.ADOQueryKunden.Active:= False;
   FormKunden.ADOQueryKunden.Close;
   if (kennzeichen = 2) or (kennzeichen = 3) then
   begin
      with FormKunden.ADOQueryKunden do begin
        SQL.Clear;
        SQL.Add('select * from kunden where kunden.name like "' + ComboBox1.Text + '%" order by kunden.name');
        FormKunden.ADOQueryKunden.Active := True;
        FormKunden.ADOQueryKunden.Open;
      end;
   end;
   if (kennzeichen = 1) then
   begin
      with FormKunden.ADOQueryKunden do begin
        SQL.Clear;
        SQL.Add('select * from kunden where kunden.kunden_nummer = '+ suchnr +' order by kunden.name');
        FormKunden.ADOQueryKunden.Active := True;
        FormKunden.ADOQueryKunden.Open;
      end;
   end;
   result := kennzeichen;
end;


////////////////////////////////////////////////////////////////////////////////
// Änderung innerhalb der Combobox
////////////////////////////////////////////////////////////////////////////////
procedure TFormAuftrag.ComboBox1Change(Sender: TObject);
begin
  // Der Suchname hier initialisiert bzw. er muss "geleert" werden damit die daten übernommen werden
  suchnr := ' ';
   // Kennzeichen 2 bedeutet das der Name aus dem Feld gesucht wird
  kennzeichen := 2;
  kundensuch(kennzeichen);
end;



in diesem sinne

frohes schaffen und vor allem proggn weiterhin

bis zum nächsten prob *gg*

bis dann
grüsse

stoni
Carsten
  Mit Zitat antworten Zitat