Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

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 » 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

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 13749
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von 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
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13811
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von brandelh » Fr, 13. Mai 2016 9:24

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 » 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

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 13749
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von 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
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13811
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: dbf in combobox einlesen

Beitrag von 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

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

Re: dbf in combobox einlesen

Beitrag von XBaseAzubi » Fr, 13. Mai 2016 9:52

Herzlichen Dank an meine Helden!

Antworten