Vet inte om denna fråga skall ligga här eller under sql men men.. Hej, Ok gjorde en funktion för att kolla om det är ett DBNULL värde. Löste det med.. Ett annat sätt som inte kräver så mycket eget kodande är att du har ett typat dataset, och på det (eller Data-tabellen) säger du att NullValues skall vara (empty) för alla Strings. Det finns redan en inbyggd metod i DataRow för att kolla om ett värde är null: Snyggare är att du ersätter NULL-värden i ditt SQL-statement; IRL blir det så här då.... :)Null från data basen.
Vilket är bästa sättet att lösa null kontroll på. Säg att jag har en tabell där vissa fält får vara Null och vissa inte. Som det är nu har jag en Datagrid som fylls med värden från databasen men det blir fel när jag försöker visa ett fält som innehåller NULL.
<code>
Cast from type 'DBNull' to type 'String' is not valid
lblPlacering.Text = myDataset.Tables("Objects").Rows(0).Item("Location")
</code>
Hur kollar jag ifall värdet i datasetet (från db:n) har NUll och i så fall tilldelar lblPlacering.Text = ""Sv: Null från data basen.
Ta ut värdet från datasetet och spara i variabel av typen object. Skriv en beslutssats (t.ex. if-sats) där du kontrollerar om det som sparats i din variabel är lika med DBNull.Value, i så fall skall det vara "" annars är det väl lämpligt att anropa ToString()-metoden på ditt objekt.
mvh
HerbjörnSv:Null från data basen.
<code>
lblPlacering.Text = checkForNull(myDataset.Tables("Objects").Rows(0).Item("Location"))
</code>
Funktionen..
<code>
Private Function checkForNull(ByVal strVar As String) As String
If strVar Is DBNull.Value Then
strVar.ToString()
End If
Return strVar
End Function
</code>
Men problemet är att funktionen inte accepterar en parameter av typen string (strVar) om det är Null. Vad skall funktionen ta in för parametertyp?
/ErikSv: Null från data basen.
<code>
Private Function checkForNull(ByVal strVar As Object) As Object
If strVar Is DBNull.Value Then
Dim newstring As String = ""
Return newstring
Else
Return strVar
End If
End Function
</code>Sv:Null från data basen.
Då blir alla DbNull tom sträng dvs "".Sv: Null från data basen.
myDataset.Tables("Objects").Rows(0).IsNull("Location")Sv: Null från data basen.
MySQL
SELECT IFNULL(column,'') AS column FROM table
MSSQL
SELECT ISNULL(column,'') AS column FROM tableSv:Null från data basen.
SELECT ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,''),ISNULL(column,'')
FROM table
Snyggare? Njae.Sv: Null från data basen.
Jag tycker nog det blir logiskt snyggare trots ditt exempel. Om applikationen inte gör skillnad på NULL och '' så bör den inte heller behöva känna till och hantera skillnaderna.
[tänker]
Men vafan, du kanske har rätt... Min lösning blir ju jobbigare om man byter databasmotor framgent.