2017-06-02 1 views
-5

Ich bin neu in VB.NET. Ich möchte Daten von einem Feld einer Access-Datenbank in eine Listbox abrufen und Daten von Min- bis Max-Wert sortieren. Aber ich eine Fehlermeldung erhalten:Konvertierung von String "System.Data.DataRowView" auf "Integer" ist nicht gültig Fehler

"Konvertierung von string "System.Data.DataRowView"geben 'Integer' ist ungültig"

enter image description here

+0

Willkommen bei StackOverflow. Bitte nehmen Sie die [Tour], lernen, gute Fragen zu stellen stackoverflow.com/help/how-to-ask, machen eine [MCVE]. Bitte geben Sie zumindest den Code in Textform statt als Bild an. – Yunnosch

Antwort

0

Sie erklärt arr(i) Array als Ganzzahl und Sie schreiben arr(i) = resListBox.Items(i).ToString ..
Wie ist das möglich ??

Angenommen, Ihr resListBox.Items(i) hat den Wert "abc", dann kann abc nicht in eine Variable vom Typ int eingefügt werden. Und sogar .ToString wandelt es in eine Zeichenfolge um und übergibt den Zeichenfolgenwert.

Versuchen Sie arr(i) = resListBox.Items(i).Text aber nur wenn der Wert in Integer ist oder sonst wird die Ausnahme erneut geworfen ...!

+0

Versuchen Sie, Code in 'Try..Catch' zu schreiben, damit Sie den Fehler im Debug-Modus anzeigen können, selbst wenn Ihr Programm läuft ...! – bonny

0

Wie Bonny in seiner Antwort bereits gesagt hat, können Sie einer Integer keinen String zuweisen.

Sie könnten versuchen, Int32.TryParse Methode zu verwenden. Auf diese Weise testen Sie, ob der Wert eine ganze Zahl ist, und dann können Sie ihn entweder der Variablen zuweisen, wenn true zurückgegeben wird, oder display messagebox, um den Wert anzuzeigen, der entweder null oder keine Ganzzahl ist.

 Dim number As Integer 
    Dim result As Boolean = Int32.TryParse(resListBox.Items(i).Text, number) 
    If result Then 
     arr(i) = resListBox.Items(i).Text 
    Else 
     MessageBox.Show("Attempted conversion of '{0}' failed.", 
          If(resListBox.Items(i).Text Is Nothing, "<null>", resListBox.Items(i).Text)) 
    End If  
Verwandte Themen