Toon posts:

[vb.net] If probleem

Pagina: 1
Acties:
  • 105 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb onderaan mijn stukje script een probleem in de IF functie de waarde die uit de database komt is 0x0 nu wil ik het daarop laten checken : If ("0x0" = plaatje) Then
De uitkomst is echter altijd "on" zelf als de waarde b.v. 1x1 is dat ik check dmv "label3.text = plaatje"
Die IF functie werkt dus niet helemaal zoals ik zou willen dat het werkt

Kan iemand mij vertellen wat ik fout doe ?


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        Dim device As String
        Dim check As String
        device = "11"
        check = "0x0"

        conn = New MySqlConnection
   
        myCommand.Connection = conn
        myCommand.CommandText = "SELECT status  FROM sensors WHERE id = ?add"
        myCommand.Parameters.Add("?add", device)
        
        plaatje = myCommand.ExecuteScalar
        Label2.Text = plaatje

        conn.Close()

        Label3.Text = plaatje

        If ("0x0" = plaatje) Then
            Label2.Text = "Off"
            PictureBox2.Image = Image.FromFile("gfx\server2.gif")
        Else
            Label2.Text = "On"
            PictureBox2.Image = Image.FromFile("gfx\server1.gif")
        End If


EDIT
De waarde is altijd "on"

[ Voor 9% gewijzigd door Verwijderd op 16-03-2005 10:36 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-05 08:08

Janoz

Moderator Devschuur®

!litemod

Wordt met 0x0 misschien niet de string "0x0", maar de hexadecimale waarde 0 bedoeld?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op woensdag 16 maart 2005 @ 10:17:
Wordt met 0x0 misschien niet de string "0x0", maar de hexadecimale waarde 0 bedoeld?
ik heb ok al getest :

If (check = plaatje) Then

maar probleem blijft.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10-05 12:29

Creepy

Tactical Espionage Splatterer

omdat check zeer waarschijnlijk ook een string is. "0x0" en 0x0 zijn twee heel verschillende dingen ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Lullige vraag misschien, maar wat staat er voor tekst in var plaatje (is de variabele plaatje wel een string)?

[ Voor 23% gewijzigd door PaulZ op 16-03-2005 10:27 ]

Vlinders moet je volgen, niet vangen...


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Maar check is een string met de waarde "0x0" en dat is nog steeds iets anders dan de hexadecimale waarde 0. Controleer maar eens wat er gebeurt als je plaatje.ToString() gebruikt. Jij moet controleren op de hex waarde 0:
Visual Basic .NET:
1
if (plaatje = 0x0) then

My personal website


Verwijderd

Topicstarter
PaulZ schreef op woensdag 16 maart 2005 @ 10:23:
Lullige vraag misschien, maar wat staat er voor tekst in var plaatje (is de variabele plaatje wel een string)?
Ja is idd een string
OZ-Gump schreef op woensdag 16 maart 2005 @ 10:24:
Maar check is een string met de waarde "0x0" en dat is nog steeds iets anders dan de hexadecimale waarde 0. Controleer maar eens wat er gebeurt als je plaatje.ToString() gebruikt. Jij moet controleren op de hex waarde 0:
Visual Basic .NET:
1
if (plaatje = 0x0) then
Ik ga het nu even testen

Verwijderd

Topicstarter
OZ-Gump schreef op woensdag 16 maart 2005 @ 10:24:
Maar check is een string met de waarde "0x0" en dat is nog steeds iets anders dan de hexadecimale waarde 0. Controleer maar eens wat er gebeurt als je plaatje.ToString() gebruikt. Jij moet controleren op de hex waarde 0:
Visual Basic .NET:
1
if (plaatje = 0x0) then
Helaas wederom geen succes...
Moet ik perse een string gebruiken of kan een ander type ook? het is niet een hexedecimale waarde maar 3 tekens achter elkaar dat lijkt op hexe

  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 08-04 20:02

4VAlien

Intarweb!

'==' ipv = , ben zelf geen vb.net programmeur maar dit lijkt me typisch zo'n geval.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

4VAlien schreef op woensdag 16 maart 2005 @ 10:40:
'==' ipv = , ben zelf geen vb.net programmeur maar dit lijkt me typisch zo'n geval.
Dat ken VB.Net niet.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
heb het zelfs met IS geprobeerd dan kent VB.net wel

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

smartscan: wat komt er uit je .ToString() van plaatje? Tover dat eens op het scherm, misschien dat je daar verder mee komt (en daar op kunt controleren)...

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op woensdag 16 maart 2005 @ 10:44:
smartscan: wat komt er uit je .ToString() van plaatje? Tover dat eens op het scherm, misschien dat je daar verder mee komt (en daar op kunt controleren)...
Visual Basic:
1
2
3
4
5
6
7
8
9
        plaatje.ToString()
        Label3.Text = plaatje
        If (plaatje = check) Then
            Label2.Text = "Off"
            PictureBox2.Image = Image.FromFile("gfx\server2.gif")
        Else
            Label2.Text = "On"
            PictureBox2.Image = Image.FromFile("gfx\server1.gif")
        End If

Label3 staat netjes op 0x0
maar krijg nog steeds te zien dat hij "On" is

[ Voor 7% gewijzigd door Verwijderd op 16-03-2005 10:48 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op woensdag 16 maart 2005 @ 10:44:
[...]


heb het zelfs met IS geprobeerd dan kent VB.net wel
Visual Basic .NET:
1
Dim a as Integer == 5

Levert bij mij toch echt een error op :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

En je leest de waarde van je ToString() niet uit dus kun je er ook niet op controleren. ToString() is een functie die een string returnt, en niet een die je variabele plaatje aan gaat lopen passen... :X

NOFI, maar ik krijg steeds meer het gevoel dat je eens een goed boek over programmeren moet kopen...

[ Voor 17% gewijzigd door OZ-Gump op 16-03-2005 10:52 ]

My personal website


Verwijderd

Topicstarter
gorgi_19 schreef op woensdag 16 maart 2005 @ 10:48:
[...]

Visual Basic .NET:
1
Dim a as Integer == 5

Levert bij mij toch echt een error op :)
Sorry gorgi_19 ik begrijp het niet helemaal ik bedoelde dat ik IS heb gebruikt in de if statement.
Excusses voor het misverstand

Visual Basic:
1
If (plaatje Is check) Then

  • Coyote
  • Registratie: Juli 1999
  • Laatst online: 08-04-2021
Wat gebeurt er als je niet de = operator gebruikt maar de equals-functie?

dus zoiets als

Visual Basic:
1
2
3
 
If (plaatje.equals(check)) Then 
...        

Verwijderd

Topicstarter
Coyote schreef op woensdag 16 maart 2005 @ 10:53:
Wat gebeurt er als je niet de = operator gebruikt maar de equals-functie?

dus zoiets als

Visual Basic:
1
2
3
 
If (plaatje.equals(check)) Then 
...        
Wederom geen succes.
De waarde van plaatje is 0x0 en check ook.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
 
        plaatje = plaatje.ToString
        Label3.Text = plaatje
        If (plaatje.Equals(check)) Then

            Label2.Text = "Off"
            PictureBox2.Image = Image.FromFile("gfx\server2.gif")
        Else
            Label2.Text = "On"
            PictureBox2.Image = Image.FromFile("gfx\server1.gif")
        End If

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Kijk eens wat er gebeurt als je allebei de strings die je hebt converteert naar dezelfde casing, dus bijvoorbeeld bij allebei .ToLower() gebruiken. Je krijgt dan zoiets als
Visual Basic .NET:
1
  If (plaatje.ToString().ToLower() = check.ToLower()) Then 

My personal website


  • FoxMan
  • Registratie: September 2000
  • Laatst online: 21-08-2025
Ik zie nergens de declaratie van plaatje staan, is deze wel gedeclareerd als string? En misschien kun je een keer proberen het object dat ExecuteScalar teruggeeft expliciet te casten naar een string (cStr(myCommand.ExecuteScalar))

LinuxFox, because penguins aren't even furry


  • Coyote
  • Registratie: Juli 1999
  • Laatst online: 08-04-2021
Welk type heeft het veld status in de database?

Verwijderd

Topicstarter
het veld in de db is type varchar
Het lijkt mij dat ik niet iets onmogelijks wil en dus nog steeds ergens een fout hebt zitten die ik zelf niet zie.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Private Sub btn_check_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_check.Click
        Dim device As String
        Dim check As String
        Dim plaatje As String

        device = "11"
        check = "0x0"

        conn = New MySqlConnection
        conn.ConnectionString = "server=" & txtServer.Text & ";" _
         & "user id=" & txtUsername.Text & ";" _
         & "password=" & txtPassword.Text & ";" _
         & "database=ncs"
        Try
            conn.Open()
            Label1.Text = "Connection Opened Successfully"
            conn.Close()
        Catch myerror As MySqlException
            Label1.Text = "Error Connecting to Database: " & myerror.Message
        Finally
            conn.Dispose()
        End Try

        conn.Open()

        myCommand.Connection = conn
        myCommand.CommandText = "SELECT status  FROM sensors WHERE id = ?add"
        myCommand.Parameters.Add("?add", device)
        plaatje = myCommand.ExecuteScalar
        Label2.Text = plaatje

        conn.Close()

        Label3.Text = plaatje
        Label1.Text = check

        If (plaatje.ToString().ToLower() = check.ToLower()) Then
            Label2.Text = "Off"
            PictureBox2.Image = Image.FromFile("gfx\server2.gif")
        Else
            Label2.Text = "On"
            PictureBox2.Image = Image.FromFile("gfx\server1.gif")
        End If

    End Sub

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Het is toevallig toch ook niet een verschil tussen 0x0 en OxO he.... ;)

My personal website


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 10-05 17:15
Heb je dat al van oz-gump geprobeerd ?
Dus alles naar string zetten en lowercase ?
Dat moet haast zeker te weten werken.

The best thing about UDP jokes is that I don't care if you get them or not.


Verwijderd

Topicstarter
Remc0 schreef op woensdag 16 maart 2005 @ 11:45:
Heb je dat al van oz-gump geprobeerd ?
Dus alles naar string zetten en lowercase ?
Dat moet haast zeker te weten werken.
Heb dat van oz-gump ook getest maar weer geen succes
het is echt 0x0 dus geen OxO

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Wat ik me nog zou kunnen voorstellen is dat de returnvalue van ExecuteScalar nog ergens spaties voor of na zich heeft. Vraag bijvoorbeeld de lengte van die string eens op, zodat je kunt zien of er misschien nog karakters voor of achter de 0x0 staan.

Verder zou je kunnen proberen de ascii waarden van de karakters eens op te vragen. Misschien lijkt het 't een, maar is het 't ander...

My personal website


Verwijderd

Topicstarter
Ik ga het proberen ik zal het resultaat nog even posten

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 10-05 17:15
Verwijderd schreef op woensdag 16 maart 2005 @ 11:50:
[...]
Heb dat van oz-gump ook getest maar weer geen succes
het is echt 0x0 dus geen OxO
Ik bedoel eigenlijk dit van oz-gump:
Visual Basic:
1
If (plaatje.ToString().ToLower() = check.ToLower()) Then

The best thing about UDP jokes is that I don't care if you get them or not.


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

offtopic:
Remc0, kijk even naar de laatste code-post van smartscan: hij heeft de ToLower ook al geprobeerd, maar zonder (positief) resultaat

My personal website


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 19:25
Het ligt misschien aan mij, maar ik heb het idee dat TS probeert te testen op een null ?

Dan zou
Visual Basic:
1
if (plaatje is null) 

genoeg moeten zijn en waarschijnlijk zou
Visual Basic:
1
if plaatje

ook al werken ?

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

@StevenK: de TS test of de variabele plaatje gelijk is aan de variabele check, waarin hij de string 0x0 zet. Hij krijgt dat (waarschijnlijk) ook als resultaat uit de ExecuteScalar methode van zijn command. In de 28 posts boven je is dat toch al een aantal keer voorbij gekomen...

smartscan: heb je de lengte van je string al eens opgevraagd en de karakters gecontroleerd?

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op woensdag 16 maart 2005 @ 13:31:
@StevenK: de TS test of de variabele plaatje gelijk is aan de variabele check, waarin hij de string 0x0 zet. Hij krijgt dat (waarschijnlijk) ook als resultaat uit de ExecuteScalar methode van zijn command. In de 28 posts boven je is dat toch al een aantal keer voorbij gekomen...

smartscan: heb je de lengte van je string al eens opgevraagd en de karakters gecontroleerd?
Mijn dank is groot !_/-\o_
er zat idd nog een spatie voor bij de var "plaatje"

Nu werkt het eindelijk lekker en kan dit topic eindelijk dicht!

Bedankt voor alle hulp bij dit DOMME probleem _/-\o_ _/-\o_
Pagina: 1