Jag har ett DataSet (kallad DS) som jag vill ta data ur och jobba med. För att kolla om Vm1Pos är Null kan du använda IsDbNull. Testa : Nästan! Det underlättar om du talar om vilket felmeddelande och vilken typ av exception du får :-) Du kan även ändra DS.Tables("marken").Rows till DS.Tables(0).Rows om du vet med dig att det är det första datasetet och du kanske inte namngett det. Vid Select Case DR.( blir det en våglinje under parentesen som indikerar något fel och när jag kör programmet så kommer meddeland om fel i Build-processen, vill du ändå fortsätta? När jag fortsätter så är det som att ALLT selecteras inte bara de som har "ABC" som första bokstäver. När jag kör samma kod idag får jag följande felmeddelande Jag ber om ursäkt, det var en bugg i min kod, så går det ibland när man skriver kod direkt från skallen utan att kunna testa den. Det blev en punkt för mycket på en av raderna (se nedan). Testa igen, och let me know... Det blir samma fel som tidigare och med raden Vm1nr=DR("Vm1nr").Value markerad som står efter Else Det här funkar Så här funkar detDataSet
Dim DR As DataRow
For Each DR In DS.Tables("märken").Rows
Hit funkar det
Det som finns i en kolumn som heter Vm1Pos och en som heter Vm1nr, vill jag dels kolla om Vm1Pos inte är tom, dels vilka bokstäver som står som de tre första tecknen i Vm1nr. Jag skriver nedan den kod man kan använda om man har RecordSet (RS). Jag kan inte få till motsvarande med mitt DataSet
If Not IsNull(RS.Fields("Vm1pos").Value) Then
Select Case Mid$((RS.Fields("Vm1nr").Value), 1, 3)
Case "XYZ":Sv: DataSet
<code>If Not IsDbNull(DR.Item("Vm1Pos")) Then....</code>Sv: DataSet
<code>
If Not DR.IsNull("Vm1pos") Then
Select Case DR.("Vm1nr").Value.ToString().SubString(0,3)
Case "XYZ":
</code>Sv: DataSet
Det blir fel i raden Select Case vid DR.(
For Each DR In DS.Tables("marken").Rows
If Not DR.IsNull("Vm1pos") Then
Select Case DR.("Vm1nr").Value.ToString().SubString(0,3)
Case "ABC"
ListBox1.Items.Add(DR("vm1nr").ToString)
End Select
End If
NextSv: DataSet
Kan kolumnen Vm1nr innehålla Null? I sådana fall måste du ta hand om detta, t ex så här :
<code>
Dim Vm1nr As String=""
For Each DR In DS.Tables("marken").Rows
If Not DR.IsNull("Vm1pos") Then
If Dr.IsNull("Vm1nr") Then
Vm1nr=""
Else
Vm1nr=DR.("Vm1nr").Value
End If
Select Case Vm1nr.SubString(0,3)
Case "ABC"
ListBox1.Items.Add(DR("vm1nr").ToString())
Case else
' Vm1nr är null, ta hand om detta
End Select
End If
Next
</code>
Notera även att om strängen i kolumnen Vm1nr har en längd som är mindre än 3 så smäller Substring(). Sv: DataSet
Sv: DataSet
Sv: DataSet
An unhandled exception of type 'System.MissingMemberException' occurred in microsoft.visualbasic.dll
Additional information: Public member 'Value' on type 'String' not found.Sv: DataSet
<code>
Dim Vm1nr As String=""
For Each DR In DS.Tables("marken").Rows
If Not DR.IsNull("Vm1pos") Then
If Dr.IsNull("Vm1nr") Then
Vm1nr=""
Else
Vm1nr=DR("Vm1nr").Value ' <----- Här var det fel...
End If
Select Case Vm1nr.SubString(0,3)
Case "ABC"
ListBox1.Items.Add(DR("vm1nr").ToString())
Case else
' Vm1nr är null, ta hand om detta
End Select
End If
Next
</code>Sv: DataSet
Sv: DataSet
Dim sSql As String = "select * from cykelpilar"
Dim objConn As New OleDb.OleDbConnection(sConnection)
Dim objDataAdapter As New OleDb.OleDbDataAdapter(sSql, objConn)
Dim objDS As New DataSet()
Dim objTable As DataTable
Dim dr As DataRow
Här kommer koden i knappen
objConn.Open()
objDataAdapter.Fill(objDS, "marken")
objConn.Close()
objTable = objDS.Tables("marken")
For Each dr In objDS.Tables("marken").Rows
ListBox1.Items.Add(dr("vm1nr").ToString)
Next
Raden som skall stå efter raden For Each verkar också funka
If Not dr.IsNull("Vm1pos") Then
Felen uppstår när det skall kolla de tre första tecknen i kolumnen Vm1nr (det finns ingen där som är tom) eller inne i Select-satsen eftersom alla poster listas.Sv: DataSet
Select Case DR("Vm1nr").ToString().SubString(0,3)
alltså utan Value i koden