dbf in combobox einlesen

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

dbf in combobox einlesen

Beitragvon XBaseAzubi » Fr, 13. Mai 2016 8:33

Hallo!
Ich lerne Xbase++ gerade und weiß nicht weiter:
Es soll der Inhalt einer dbf (UserID und UserName) in eine ComboBox eingelesen werden, um einen Wert : UserID nach der Auswahl in der Combobox in einer Variable zu speichern.

Code: Alles auswählen
function user()
   local aUser := {}, ni
   
   FIELD USERID, USERNAME, ACTIVE
   dbGoTop()
   do while ! Eof()
      if sUser->ACTIVE
         ni := aScan(aUser, {|a| a = Str(sUser->USERID) })
         if ni == 0   
            aAdd(aUser, Str(sUser->USERID) + " " + sUser->USERNAME)
         endif
      endif
      DbSkip()
   enddo
   
return aUser

Denke ich zu kompliziert und geht´s auch einfacher?

Gruß
Martin
XBaseAzubi
Rookie
Rookie
 
Beiträge: 10
Registriert: Fr, 13. Mai 2016 8:14
Wohnort: Tattendorf/Österreich

Re: dbf in combobox einlesen

Beitragvon Martin Altmann » Fr, 13. Mai 2016 8:48

Moin Martin,
herzlich Willkommen im Forum - ich habe mir mal erlaubt, Dein Codeschnipsel in die entsprechenden code-Tags einzuschließen, dann kann man das besser und strukturiert sehen.
Zu kompliziert denken tust Du nicht - im Prinzip passt das schon so.
Du könntest Dir nur folgendes überlegen:
Kann der User mehrmals aktiv sein? Wenn nicht, kannst Du Dir das Prüfen mittels aScan im Prinzip sparen und den gesamten do-while-teil einfacher erledigen:
Code: Alles auswählen
sUser->( DbEval( {|| aAdd( aUser, Str(USERID) + " " + USERNAME) ) }, {|| ACTIVE } ) )


Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12964
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: dbf in combobox einlesen

Beitragvon brandelh » Fr, 13. Mai 2016 9:24

So sind die Namen natürlich erstmal in einem Array, noch nicht in einer ComboBox ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13384
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: dbf in combobox einlesen

Beitragvon XBaseAzubi » Fr, 13. Mai 2016 9:27

Hallo Martin!
Zuerst mal: ich bin begeistert wie schnell du geantwortet hast. Danke!

Nun: Das "Active" ist dafür da, nur jene User in das Array der Combobox einzulesen, die noch im Betrieb sind und somit "Aktiv".
Das Prinzip habe ich verstanden. Irgendwas übersehe ich aber, denn beim kompilieren bekomme ich die Fehlermeldung "Function user does not end with RETURN".

Code: Alles auswählen
//----------------------------------------------

function user()
   local aUser := {}

   FIELD USERID, USERNAME, ACTIVE

   sUser->( DbEval( {|| aAdd( aUser, Str(USERID) + " " + USERNAME) ) }, {|| ACTIVE } ) )
return aUser

//----------------------------------------------


Gruß
Martin
XBaseAzubi
Rookie
Rookie
 
Beiträge: 10
Registriert: Fr, 13. Mai 2016 8:14
Wohnort: Tattendorf/Österreich

Re: dbf in combobox einlesen

Beitragvon Martin Altmann » Fr, 13. Mai 2016 9:30

Sorry,
das liegt daran, dass eine ) hinter USERNAME zu viel ist - dicke Finger!
Mach die weg, dann klappt das mit dem Compilieren auch.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12964
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: dbf in combobox einlesen

Beitragvon brandelh » Fr, 13. Mai 2016 9:34

Ein Syntaxfehler kann dazu führen, zähle mal deine Klammern:

sUser->( DbEval( {|| aAdd( aUser, Str(USERID) + " " + USERNAME) ) }, {|| ACTIVE } ) )
so sollte es stimmen.
sUser->( DbEval( {|| aAdd( aUser, Str(USERID) + " " + USERNAME ) }, {|| ACTIVE } ) )

Die mächtigen Befehle mit den Codeblocks sind leider etwa unübersichtlicher bei den Fehlermeldungen ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13384
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: dbf in combobox einlesen

Beitragvon XBaseAzubi » Fr, 13. Mai 2016 9:52

Herzlichen Dank an meine Helden!
XBaseAzubi
Rookie
Rookie
 
Beiträge: 10
Registriert: Fr, 13. Mai 2016 8:14
Wohnort: Tattendorf/Österreich


Zurück zu Newbie

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast