PDA

Vollständige Version anzeigen : Daten in Kombifeld schreiben


Jane 2002
06.08.2004, 07:10
Hallo Leute

Dank eurer Hilfe bin ich ja schon ziemlich weit aber noch nicht fertig. :)

Also ich möchte gerne Daten die ich aus einer Schleife bekomme und einer Funktion (ziemlich kompliziert) in ein Kombifeld schreiben so dass ich diese später auswählen kann.
Im Moment schreibe ich die Daten in ein Textfeld das sieht dann ungefähr so aus:

Maschine1, Maschine3, Maschine5

passender Code:
If (FoundResult = True) Then
ResultEdit.Value = ""
For i = 0 To ResultCount - 1
If (i <> ResultCount - 1) Then
ResultEdit.Value = ResultEdit.Value + varArray(0, ResultValues(i)) + ", " '
'Ausgabe der Maschinen
Else

ResultEdit.Value = ResultEdit.Value + varArray(0, ResultValues(i)) + ", "
End If
Next
Else
ResultEdit.Value = "Die Werte gehen nicht genau auf."

End If


ResultEdit ist mein Textfeld. Ich habe auch schon probiert das Textfeld in ein Kombifeld umzuwandeln. Allerdings wird dann alles wie im Textfeld in eine Zeile geschrieben. Wenn ich einen manuellen Zeilenumbruch einfüge mit
ResultEdit.Value = ResultEdit.Value + varArray(0, ResultValues(i)) & Chr(13) & Chr(10)
zeigt mir das Kombinationsfeld nur den ersten Wert (Maschine1).

Ichhätte gerne
Maschine1
Maschine3
Maschien5
zum auswählen im Kombifeld.

Die einzige Möglichkeit die ich noch irgendwie hinbekommen würde wäre es die Werte aus dem Textfeld in eine Tabelle zu schreiben und dann für das Kombifeld die Daten aus der Tabelle zu holen. Dort bekomme ich aber auch immer alles nur in eine Zeile. Das andere wäre mir auch lieber.

Ich freue mich über alle Antworten :) ganz doll

Bye Jane

J_Eilers
06.08.2004, 07:20
Hi,

dafür muss dein Kombifeld auf eine Werteliste umgestellt werden und die einzelnen Einträge durch ein ";" getrennt werden. Einziger Nachteil ist eine maximale Zeichenlänge von ca. 2000 Zeichen.

If FoundResult Then
ResultEdit = ""
If ResultCount <> 0 Then
For i = 0 To ResultCount - 1
ResultEdit = ResultEdit & ";" & varArray(0, ResultValues(i)) & "; " '
'Ausgabe der Maschinen
Next
End If
ResultEdit = Mid(ResultEdit, 2)
Else
ResultEdit = "Die Werte gehen nicht genau auf."
End If

Me!DeinKombi.RowSourceType = "Value List"
Me!DeinKombi.RowSource = ResultEdit

Vielleicht ja so, aber dafür fehlen mir einfach ein paar Infos.

Jane 2002
06.08.2004, 07:38
Hi Jan

Also ich hab deinen Code etwas verändert angewendet:
If FoundResult Then
ResultEdit = ""
If ResultCount <> 0 Then
For i = 0 To ResultCount - 1
ResultEdit = ResultEdit + varArray(0, ResultValues(i)) + "; "
'Ausgabe der Maschinen
Next
End If
ResultEdit = Mid(ResultEdit, 2)
Else
ResultEdit = "Die Werte gehen nicht genau auf."
End If

Me!Combo39.RowSourceType = "Value List"
Me!Combo39.RowSource = ResultEdit



und es funktioniert :D
Nur eine Kleinigkeit bei dem ersten Wert im Kombifeld wie auch im Textfeld fehlt der erste Buchstabe. Echt komisch.

Er gibt aus:
aschine1
Maschine3
....

Kann man die Daten vielleicht auch direkt in das Kombifeld schreiben ohne über das Textfeld zu gehen?

Vielen Dank!

Bye Jane :)

J_Eilers
06.08.2004, 07:44
Sorry, mein Kaffee läuft noch ;)

Ändere mal diese Zeile, dann sollte der 1. Buchstabe auch auftauchen.

ResultEdit = Mid(ResultEdit, 1)


Wenn du mir verrätst, woher die Daten kommen, dann geht das vermutlich auch ohne das Textfeld.

Jane 2002
06.08.2004, 08:04
Danke klasse ja funtioniert prima!!! :top:

Es ist ja auch noch früh am Morgen :)

Wo die Daten herkommen ist nicht so einfach zu erklären ich blicke da auch nicht so genau durch. Ich bin halt noch Anfänger und der Code ist nicht von mir.
Also eigentlich kommen die Daten aus einem Array "varArray" in dem ich eine Tabelle eingelesen habe. Dort werden die Daten aus einer Spalte ausgelesen. Je nach dem welcher Wert/bzw. Werte der Spalte eine Funktion erfült die ich berechnet habe wird diese Zeile ausgegeben "ResultValues(i). Und die Werte aus dem Array (0, ResultValues(i)) in das Textfeld geschrieben per Schleife. Also praktisch aus der Spalte 0 der Wert der jeweiligen Zeile.

Aber das ist nicht so wichtig über das Textfeld zu gehen ist viel einfacher!

Nochmals vielen Dank!

bye Jane

J_Eilers
06.08.2004, 08:09
Wenn ich es richtig verstanden habe, dann versuchs mal damit:

If FoundResult Then
Me!Combo39.RowSourceType = "Value List"
Me!Combo39.RowSource = ""
If ResultCount <> 0 Then
For i = 0 To ResultCount - 1
Me!Combo39.RowSource = Me!Combo39.RowSource & ";" & varArray(0, ResultValues(i))
'Ausgabe der Maschinen
Next
End If
Me!Combo39.RowSource = Mid(Me!Combo39.RowSource, 1)
Else
Me!Combo39.RowSource = "Die Werte gehen nicht genau auf."
End If

Jane 2002
06.08.2004, 08:17
Super einsame Spitze funktionert. :D

Dann kann ich nämlich das Textfeld weglassen. Das sieht besser aus.

Noch eine kleine Frage kann man es auch so machen das in der ersten Zeile bei der Auswahl des Kombifeldes schon etwas steht und nicht erst wenn man den Pfeil anklickt?

Bye Jane

J_Eilers
06.08.2004, 08:23
Me!Combo39 = Me!Combo39.ItemData(0)?

Damit wird der 1. Eintrag ausgewählt.

Jane 2002
06.08.2004, 08:27
Danke! :happy: Dann habe ich ja jetzt allesgeschafft.

Ok dann hab ich dich jetzt genug gelöchert.
Ich wünsch dir noch ein schönes Wochenende!

Bye Jane