Har följde koder som inte funkar ....... Du får konvertera värdet till en int, är det såhär man gör i VB.NET tro? Du säger inte om du får kompileringsfel eller om det är ett logiskt fel som gör att If-satsen inte beter sig så som du avser. Men koden ska gå att kompilera om Option Strict är Off vilket jag tror är default i VB.net. Om man aktiverat Option Strict så måste man göra som Johan säger, eller något av dessa alternativ : Jag får följande "fel" vid kodläggningen ... Bifogar den aktuella koden för kommentarer .. kan kanske va min lösning på filter som ställer till det !? Nu kanske jag är lite onykter, men det är faktiskt fredag jepp ... helt rätt ... insåg det sent igårkväll .... nykter som jag var ........ Det ska vara parenteser antingen efter variabelnamnet eller efter typen (DataRow) eftersom metoden Select returnerar en array av DataRow:s. Ha, nu e man nykter igen... Jo jag löste det, sen om det är en klok lösning låter jag andra att bedömma ... Hehe .... Johan du ändrade ditt inlägg samtidigt som jag lade in min lösning och visst har du rätt vilket jag insåg sent om sider.Operator vid DataRow ....
<code>
if myRow("nomore") = 1 then
</code>
Hur ska det skrivas ???
'nomore' är en tinyIntegerSv: Operator vid DataRow ....
if CInt(myRow("nomore")) = 1 then
/JohanSv: Operator vid DataRow ....
1) if CType(myRow("nomore"),Integer) = 1 then
2) if myRow("nomore")).ToString = "1" then
3) if DirectCast(myRow("nomore"),Integer) = 1 then
Själv föredrar jag CType() före alla Cxxx() men det är väl en smaksak. Undantaget är när man vet att den underliggande datatypen i en variabel är deklarerad som Object (vilket värdena i ett dataset är). Då kan DirectCast vara lämpligare...
Är det inte ett kompileringsfel så får du se över vad myRow("nomore") innehåller för värde...Sv: Operator vid DataRow ....
<code>
Operator '=' is not defined for types 'Sytem.Data.Datarow' AND 'Integer'
</code>
Har missat Ctype varianten, har använt Convert.toInt16 i andra sammanhang men ska kolla närmare på Ctype så tack för den inputen ... har nån mer någon att tillägga så shoot !Sv: Operator vid DataRow ....
<code>
Dim myTab As DataTable
Try
'tilldelar tabellen datasettet
myTab = dsMarkisdata.Tables("vavdata")
'filtrerar
Dim myRow As DataRow() = myTab.Select("vav_id = '" & txtDuknummer.Text & "'")
If myRow.Length <= 0 Then
'ingen väv med detta nummer hittades
MsgBox("Väv hittades ej !")
Else
If myRow("nomore") = 1 Then
'....
End If
'visar designnamn
lblDesignnamn.Text = Convert.ToString(myRow("designnamn"))
cmbKB.Text = Convert.ToString(myRow("kantband"))
cmbPass.Items.Clear()
cmbPass.Items.Add(myRow("ver1"))
cmbPass.Items.Add(myRow("ver2"))
cmbPass.Items.Add(myRow("ver3"))
cmbPass.Items.Add(myRow("ver4"))
End If
Catch ex As Exception
MsgBox("Fel vid hämtning av dukdata !" & vbCrLf & ex.Message)
myRow = Nothing
myTab = Nothing
End Try
myRow = Nothing
myTab = Nothing
</code>Sv: Operator vid DataRow ....
Varför har du parenteser efter "Dim myRow As DataRow" ?
Då får du ju en array, eller ?
/JohanSv: Operator vid DataRow ....
tar jag bort dom funkar det inte alls ...
vad jag är ute efter är helt enkelt är ett smidigt sätt att ta fram ett specifikt recodset i ett dataset utan att behöva köra igenom alla raderna .. hittar inga bra beskrivningar för detta ....Sv: Operator vid DataRow ....
Fungerade typkonverteringen med CType? Är problemet löst?Sv: Operator vid DataRow ....
Saknas det då inte ett parentespar här ?
<code>If myRow("nomore") = 1 Then</code>
borde väl vara
<code>If myRow(0)("nomore") = 1 Then</code>
/JohanSv: Operator vid DataRow ....
Jag använde DataView enl. följande för att plocka ut specifik post i ett datatset ....
<code>
Dim myView As New DataView
Try
'tilldelar en dataview tabell från dataset
'dataview filtreras sedan med aktuell färg som underlag
myView.Table = dsMarkis.Tables("vavdata")
myView.RowFilter = "vav_id = '" & txtDuknummer.Text & "'"
'kollar om väv hittades
If myView.Table.Rows.Count <= 0 Then
MsgBox("Ingen väv hittades med detta nummer !")
Else
lblDesignnamn.Text = myView(0)("designnamn")
cmbKB.Text = myView(0)("kantband")
cmbPass.Items.Clear()
cmbPass.Items.Add(myView(0)("ver1"))
cmbPass.Items.Add(myView(0)("ver2"))
cmbPass.Items.Add(myView(0)("ver3"))
cmbPass.Items.Add(myView(0)("ver4"))
'prisgrupp för aktuell väv
dataMarkis.duk_prisgrupp = myView(0)("prisgrupp")
end if
Catch ex As Exception
MsgBox("Fel vid hämtning av vävdata !" & vbCrLf & ex.Message)
End Try
</code>Sv: Operator vid DataRow ....
Sen valde jag DataView lösningen för den kändes smidig ... :o)
Tack för din hjälp ...