dbf in combobox einlesen

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

Moderator: Moderatoren

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

dbf in combobox einlesen

Beitrag von XBaseAzubi »

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
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von brandelh »

So sind die Namen natürlich erstmal in einem Array, noch nicht in einer ComboBox ;-)
Gruß
Hubert
XBaseAzubi
Rookie
Rookie
Beiträge: 10
Registriert: Fr, 13. Mai 2016 8:14
Wohnort: Tattendorf/Österreich

Re: dbf in combobox einlesen

Beitrag von XBaseAzubi »

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
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von Martin Altmann »

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: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von brandelh »

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
XBaseAzubi
Rookie
Rookie
Beiträge: 10
Registriert: Fr, 13. Mai 2016 8:14
Wohnort: Tattendorf/Österreich

Re: dbf in combobox einlesen

Beitrag von XBaseAzubi »

Herzlichen Dank an meine Helden!
Antworten