Toon posts:

Vreemd verschil tussen recordset MSSQL vs. MYSQL!? (ASP)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok ik heb nu echt iets vaags hierzo. Ik heb een applicatie die normaal gesproken op MS-SQL draait. Maar nu is de vraag gekomen om em ook op MY-SQL te kunnen laten draaien. Geen probleem!

Dacht ik...

Ik merk nu alleen dat er iets erg geks aan de hand is met een bepaalde recordset. Ik heb een database veldje wat Visible heet. Daarmee kan je bepaalde pagina elementen aan en uit zetten (duh). In MS-SQL werkte alles perfect zonder problemen, dus ik query de DB, loop de recordset en als ik de RS uitlees met wat response.writejes zie ik precies per record netjes een entry.

Het vreemde is nu als ik een query doe op de exacte copy van die database in MySQL dat, als ik ga loopen, er een fout optreed als Visible de waarde 'ja' ipv 'nee' bevat.

Op een of andere manier is de mysql rs anders dan de mssql rs.. kan dat uberhaupt wel?!? Het lijkt er namelijk op dat als ik het veld Visible aanspreek in de code, het is gewoon ASP trouwens, dat er een MoveNext word uitgevoerd zonder dat de rest van de loop doorgelopen word...

Ik gebruik dit om te loopen:

code:
1
2
3
4
while not rs.eof
response.write "visible=" & rs("visible") & "<hr>"
rs.movenext
wend


dus als voorbeeld ziet de Ms-Sql rs als ik em response.write er zo uit:

visible=nee
-------------
visible=ja
------------
visible=nee
-----------

en die MySQL rs ziet er zo uit:


visible=nee
-------------
visible=javisible=nee
------------

Heeft iemand enig idee wat er hier aan de hand is??

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18:12

mulder

ik spuug op het trottoir

Is je uitgepoepte html niet gewoon fout?

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Don Facundo schreef op vrijdag 03 maart 2006 @ 12:05:
Is je uitgepoepte html niet gewoon fout?
nee ik dacht meteen als eerste ook al aan een IE fout.. maar de sourcecode laat echt zien dat er een <HR> ontbreekt in de code!!

dus het lijkt wel dat zodra er een rs("visible") tegengekomen word in de code er automatisch een movenext of zo plaats vind?! :S

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18:12

mulder

ik spuug op het trottoir

En als er 4 records in de database zitten? (Om het een en ander uit te sluiten)

oogjes open, snaveltjes dicht


  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
En als je het veld eens een alias geeft, bijvoorbeeld blnVisible.

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


Verwijderd

Topicstarter
Er zitten 703 records in de database, de meeste daarvan staan op "nee" en het zijn er maar een paar die op "ja" staan. ik denk dat het aantal records er ook weinig mee te maken heeft =/

Ik alias de veldnamen al in de query omdat iemand anders de tabel heeft gemaakt en er echt bizar veldnamen voor heeft gekozen en daar had ik geen zin in dus ik gebruik al aliassen om de RS op te halen..

Het vreemde is gewoon dat ik ieder veld in de RS kan aanroepen zonder enig probleem. Maar zodra ik in een if statement ofzo dat rs("Visible") of rs("BegripVisible") of what voor een alias dan ook aanroep er een dwaze movenext actie gebeurt..

Ik had ook nog even gedacht aan het datatype van het veld, maar ik heb behalve Visible bv ook Editable. En daar staan precies dezelfde waarde in en het veld heeft precies hetzeldfe datatype as Visible! Dus dan kan het daar toch ook niet aan liggen?

  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
En als je de waarde als tekstveld laat afdrukken?

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


Verwijderd

Topicstarter
miniBSD schreef op vrijdag 03 maart 2006 @ 13:16:
En als je de waarde als tekstveld laat afdrukken?
dus zoiets als

code:
1
 response.write cstr(rs("Visible"))

[ Voor 6% gewijzigd door Verwijderd op 03-03-2006 13:19 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18:12

mulder

ik spuug op het trottoir

En Response.Write(rs.Fields("Visible") & ":") geeft dus
visible=javisible=nee:
en niet
visible=ja:visible=nee:?
Ik geloof niet zo in magisch MoveNext nl.

oogjes open, snaveltjes dicht


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verschil in datatypes of zo? MS SQL ondersteunt niet een echte boolean, MySQL misschien wel? Zoiets is zo snel het enige dat ik kan bedenken.

Kun je het datatype en de waarde van de kolom eens posten, en de query?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Verwijderd schreef op vrijdag 03 maart 2006 @ 13:19:
code:
1
 response.write cstr(rs("Visible"))
Bijvoorbeeld, dat je het naar een tekstveld convert en dan kijken wat er voor waarde in staat. Wat je ook nog kunt doen is PHP installeren en met phpMyAdmin eens kijken.

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


Verwijderd

Misschien staat er toch iets raars in de database van MySQL? Wellicht een update er over heen gooien, of kijken wat nu precies het datatype is.

Het zal wel niet helpen, maar ik zou je ook aanraden om rs.fields("Visible").Value te gebruiken.

Verwijderd

Topicstarter
Don Facundo schreef op vrijdag 03 maart 2006 @ 13:21:
En Response.Write(rs.Fields("Visible") & ":") geeft dus
visible=javisible=nee:
en niet
visible=ja:visible=nee:?
Ik geloof niet zo in magisch MoveNext nl.
het gekke is dus dat als je NA het aanroepen van rs("visible") code zet, dat dat NIET word uitgevoerd.. ten minste niet helemaal.. want als je schrijft

code:
1
2
response.write c & " " & rs("visible") & ":"
c=c+1


en je laat NA de response.write C ophogen met 1, dan zie je wel mooi(en lomp) dat het tellertje wel ophoogt, maar dat de dubbele punt er dus NIET bij staat...

Het data type is CHAR(3).. in MsSQL was het een VarChar(3).. dus er werd geen gebruik gemaakt van boolean velden. gewoon opgeslagen strings die ik wil raadplegen.

  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 04-03 21:01
Het klinkt meer als een IIS/ODBC fout dan een fout in je code... tenslotte een movenext blijft een movenext.
Probeer de code + database anders op een andere computer. Misschien dat dit helpt. Zoja dan zou ik je IIS en ODBC Drivers even opnieuw installeren.

edit:
Wat me trouwens opviel is dat het gebeurt bij "ja". Probeer anders er eerst "ja " van te maken. (3 chars)
anders weet ik het ook niet meer :)

[ Voor 23% gewijzigd door kalechinees op 03-03-2006 20:23 ]


  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Wat denk je dat er gebeurd met een NULL value? Dat is het probleem, dan worden de strings niet samengevoegd. Begin maar eens met een standaard waarde op te nemen en de lege velden daar van te voorzien. Iets wat sowieso had gemoeten voor een veld dat wilt gebruiken als boolean.

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

miniBSD schreef op vrijdag 03 maart 2006 @ 20:23:
Wat denk je dat er gebeurd met een NULL value? Dat is het probleem, dan worden de strings niet samengevoegd. Begin maar eens met een standaard waarde op te nemen en de lege velden daar van te voorzien. Iets wat sowieso had gemoeten voor een veld dat wilt gebruiken als boolean.
Daar kun je achter komen door het even expliciet te casten naar een string mbv cStr, bij een null-value geeftie afaik een foutmelding. Maar je hebt wel gelijk ;)

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.

Pagina: 1