msgbox dynamisch erweitern

DrMueller

Erfahrenes Mitglied
Hallo mal wieder
Hab mal wieder ein Problemchen :eek: :
Ich lese Datensätze, konkret IDs, aus einer DB aus und speichere diese in ein Array.
Soweit so gut, jetz möchte ich diese Datensätze in einer Messagebox ausgeben, also z.B.:

Folgende IDs wurden gefunden:
...
...
...
...


Nun ist die Anzahl der IDs natürlich sehr unterschiedlich und ich hab keine Ahnung, ob man das überhaupt so machen kann.
Ein bekannter VB-Kenner hat gesagt, so was sei sehr kompliziert und es wäre einfacher mittels neuem Formular das auszugeben, aber ich dachte ich frage lieber noch mal nach.
 
Hi,

durchlauf das Recordset und baue die MsgBox Meldung zusammen:
ungefähr so (ungetestet)
Code:
Dim Rs As ADODB.Recordset
Dim sMsg As String

Call Rs.Open(...)

With Rs
   If (.RecordCount) Then
       Do (While ( Not (.EOF)))
             sMsg = sMsg & VbCrLf & .Fields("DeinFeld").Value
             Call .MoveNext
       Loop
   End If
End With

Call MsgBox("Folgende IDs wurden gefunden:" & VbCrlf & sMsg, vbInformation)

Da frage ich mich, was der VB Kenner mit der Formularlösung einfacher findet :rolleyes:
 
Hi.

Im Grunde kann man schon die MessageBox dafür verwenden, du mußt nur einen String mit deinen ganzen IDs zusammenbasteln und anzeigen. Bsp:
Visual Basic:
IDs = Array(1, 2, 3, 4, 5)
msg = "Es wurden folgende IDs gefunden:" & vbNewline
For Each id in IDs
  msg = msg & vbNewline & id
Next
MsgBox msg

Allerdings ist das nur sinnvoll wenn die IDs auf eine überschaubare Menge beschränkt sind.

Sonst solltest du wirklich lieber eine neue Form mit einer Listbox erstellen so das man dann scrollen kann.

Gruß
 
Huch, da war ich wohl etwas zu langsam.

so überschreibts doch jedesmal den Datensatz und nur der letzte wird dann angezeigt oder lieg ich falsch?
Ja, da liegst du falsch. An den alten Wert von dem String wird immer der aktuelle Datensatz noch angehängt, so das dann zum Schluß alle Datensätze im String aufgelistet sind.

Gruß
 
Hi,

ich wüsste nicht, dass eine For Each Schleife in VB 6 mit Arrays funktioniert, lasse
mich aber gerne belehren.
Für Arrays nimmt man normalerweise eine Zählerschleife

Code:
Dim s As String
Dim i  As Long
For i = LBound(Array) To UBound(Array)
    s = s & VbCrlf & Array(i)
Next i

Call MsgBox("Es wurden folgende IDs gefunden:" & VbCrlf & s, vbInformation)
 
ich wüsste nicht, dass eine For Each Schleife in VB 6 mit Arrays funktioniert, lasse
mich aber gerne belehren.
Es funktioniert sowohl in VBScript, VB6 und VB.NET.

Für Arrays nimmt man normalerweise eine Zählerschleife
Wer sagt das? Ich behaupte, das es sogar üblich ist Arrays mit einer For Each Schleife zu durchlaufen. Man muß es sich ja nicht schwerer machen als es ist.

Siehe z.B. http://www.vbexplorer.com/VBExplorer/vb_feature/sep2000/use_for_each_loop_array.asp

Gruß
 
Hi,

naja, Nachteil ist die Verwendung vom Datentyp Variant, speicherfressend (im Vergleich zu anderen Datentypen) und der Zugriff auf den Datentyp indirekt ist, so dass erst überprüft wird, welchen Typ er den nun hat.
Dadurch dauert der Zugriff auf das Array länger, als bei der Typdeklaration.

Ein wirkliches Argument für die Verwendung von For Each liefert Dein Link auch nicht wirklich, zumindest erkenne ich ihn nicht.

Das es in VB.NET funktioniert ist für mich kein Grund, da VB.NET und VB Classic nicht wirklich was gemeinsam haben, außer event. Teile der Synthax, sprich VB.NET ist eine neue/andere Sprache.
 
hm for each kenne ich gar net, bis jetz hab ich das irgendwie immer umschifft. Naja bist jetzt hats auch ohne geklappt, aber scheint ganz nützlich zu sein.
Kurze Frage: wenn ichs so aufbaue, wie ich unten und bei deim link gesehn hab, muss ich nur ne variabel was variant deklarieren und
for each variabel in array
nun möchte ich diese Variable gleich ausgeben, doch da erscehitn der Fehler das byRef unverträglich ist.
 

Neue Beiträge

Zurück