[SQL] SELECT query in Visual Basic *

Pagina: 1
Acties:

  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Hallo Tweakers,

Ik voer een select-statement uit via Visual Basic 6 op een MS Access database.

Het komt nog wel eens voor dat gegevens de waarde Null hebben, deze wil ik vervangen door de waarde '0'.

De functies Nz(kolomnaam, vervangende waarde) Of Nvl() werken niet in ADO.

Wie kan mij aan de juiste ADO-functie helpen? 8)7

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
Ik heb je in je vorige topic al eens gezegd dat je naar ISNULL Moet kijken.

(NVL, etc... heeft ook niets met ADO te maken, maar met het SQL dialect dat je gebruikt).

[ Voor 39% gewijzigd door whoami op 02-06-2004 11:12 ]

https://fgheysels.github.io/


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
whoami schreef op 02 juni 2004 @ 11:12:
Ik heb je in je vorige topic al eens gezegd dat je naar ISNULL Moet kijken.

(NVL, etc... heeft ook niets met ADO te maken, maar met het SQL dialect dat je gebruikt).
Volgens mij is dat niet de juiste oplossing, het gaat om een functie waarmee ik controleer of de kolomnaam Null is, en indien dat het geval is, vervang ik deze waarde door bijvoorbeeld '0'.

De functie die jij voorstelt geeft alleen de waarde True of False, op die manier moet ik een gigantische lus schrijven om alles te vervangen

Verwijderd

Gebruik IIf (immediate if)??

[ Voor 6% gewijzigd door Verwijderd op 02-06-2004 11:17 ]


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Verwijderd schreef op 02 juni 2004 @ 11:17:
Gebruik IIf (immediate if)??
Geprobeerd, werkt ook niet

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
nenne schreef op 02 juni 2004 @ 11:15:
[...]


Volgens mij is dat niet de juiste oplossing, het gaat om een functie waarmee ik controleer of de kolomnaam Null is, en indien dat het geval is, vervang ik deze waarde door bijvoorbeeld '0'.
:z
In SQL Server heb je een ISNULL functie, waarmee je dit kunt doen:
code:
1
SELECT ISNULL (veld, 0) FROM tabel


Of die in Access ook zo bestaat weet ik zo niet.
De functie die jij voorstelt geeft alleen de waarde True of False, op die manier moet ik een gigantische lus schrijven om alles te vervangen
Een lus?
SELECT IIF(ISNULL(veld), 0, veld)[/code]

https://fgheysels.github.io/


  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 18:45

The Eagle

I wear my sunglasses at night

Waarom werk je niet gewoon met een spatie ipv de NULL waarde? Dat maakt je tevens een stuk flexibeler qua code mocht je ooit op een andere DB overstappen.

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:53
The_Eagle schreef op 02 juni 2004 @ 11:30:
Waarom werk je niet gewoon met een spatie ipv de NULL waarde? Dat maakt je tevens een stuk flexibeler qua code mocht je ooit op een andere DB overstappen.
Omdat een spatie niet hetzelfde is als een NULL waarde. (Denk maar aan Foreign Key constraints, etc...)
Het kan enkel voor meer problemen zorgen.

Als je applicatie goed opgezet is, hoef je ook enkel je DAL aan te passen als je naar een andere DB overstapt.

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

The_Eagle schreef op 02 juni 2004 @ 11:30:
Waarom werk je niet gewoon met een spatie ipv de NULL waarde? Dat maakt je tevens een stuk flexibeler qua code mocht je ooit op een andere DB overstappen.
Wat een enorm foute opmerking :X

NULL moet je nooit door een andere waarde vervangen indien de NULL correct gebruikt wordt. NULL is een waarde, namelijk de absentie van waarde. NULL is dan ook ongelijk aan NULL! NULL replacen door potentiele meaningless troep gaat je altijd uiteindelijk in de problemen brengen....

Professionele website nodig?


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
The_Eagle schreef op 02 juni 2004 @ 11:30:
Waarom werk je niet gewoon met een spatie ipv de NULL waarde? Dat maakt je tevens een stuk flexibeler qua code mocht je ooit op een andere DB overstappen.
Als je een collega van me was en je zou dat doen, dan zou ik daar niet zo blij van worden.
En om je in verwarring te brengen, zou ik triggers maken, die in ieder geval alle overbodige spaties weer wegmikken ;)
Alle velden opvullen met spaties zou natuurlijk ook kunnen, is ook wel vervelend/onhandig/lastig en vooral heel erg fout ;)
curry684 schreef op 02 juni 2004 @ 11:46:
[...]

Wat een enorm foute opmerking :X

NULL moet je nooit door een andere waarde vervangen indien de NULL correct gebruikt wordt. NULL is een waarde, namelijk de absentie van waarde. NULL is dan ook ongelijk aan NULL! NULL replacen door potentiele meaningless troep gaat je altijd uiteindelijk in de problemen brengen....
Imho kun je bij bijvoorbeeld een naam ook meestal wel een lege string gebruiken, maar dat is een discussie die hier al wel vaker gevoerd is, dus misschien kunnen we daar beter maar niet weer mee beginnen.
Maar over die overbodige spatie zijn we het in ieder geval helemaal eens.

Never underestimate the power of


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

cameodski schreef op 02 juni 2004 @ 12:03:
[...]

Imho kun je bij bijvoorbeeld een naam ook meestal wel een lege string gebruiken, maar dat is een discussie die hier al wel vaker gevoerd is, dus misschien kunnen we daar beter maar niet weer mee beginnen.
Het zijn gewoon fundamenteel andere dingen :) Een lege naam is een lege naam, een NULL als naam is een niet ingevulde of onbekende naam. Ook een lege string is een geldige string ;)

Maar het gaat idd vooral om foreign keys, die moeten gewoon correct NULL gedrag vertonen anders ga je enorme problemen krijgen zodra je leuke LEFT OUTER JOINs e.d. gaat bedenken.... :X

Professionele website nodig?


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
whoami schreef op 02 juni 2004 @ 11:29:
[...]

:z
In SQL Server heb je een ISNULL functie, waarmee je dit kunt doen:
code:
1
SELECT ISNULL (veld, 0) FROM tabel


Of die in Access ook zo bestaat weet ik zo niet.


[...]

Een lus?
SELECT IIF(ISNULL(veld), 0, veld)[/code]
Please help me out, ik heb nu het volgende statement:

elect Perceelnr, IIF(ISNULL(Straatnaam), 'Niet bekend', Straatnaam), Plaats from Perceel

Als ik het statement run in Visual Basic, krijg ik tijdens het updaten van de nieuwe tabel met de geselecteerde kolommen uit bovenstaande statement de foutmelding
"item cannot be found in the collection corresponding to the requested name or ordinal"


het eerste statement werkt dus goed, maar de verkregen waarde kan niet goed geplakt worden....

any ideas?

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Begrijp ik het goed dat je de query in Access hebt aangemaakt en dat je die vervolgens wil gebruiken om te updaten?
Als dat het geval is, probeer je iets te doen wat niet kan, omdat je query een functie bevat.
Als je queries (eigenlijk zijn het views) wilt gebruiken om te updaten mag de query uit slechts één tabel gegevens halen en moeten er geen functies in de queries zitten.

[ Voor 5% gewijzigd door cameodski op 02-06-2004 12:55 ]

Never underestimate the power of


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
cameodski schreef op 02 juni 2004 @ 12:54:
Begrijp ik het goed dat je de query in Access hebt aangemaakt en dat je die vervolgens wil gebruiken om te updaten?
Als dat het geval is, probeer je iets te doen wat niet kan, omdat je query een functie bevat.
Als je queries (eigenlijk zijn het views) wilt gebruiken om te updaten mag de query uit slechts één tabel gegevens halen en moeten er geen functies in de queries zitten.
Nee ik heb een query gemaakt in VB6 waarmee ik gegevens ophaal, en een andere query waarmee ik een tabel update met de gegevens uit de eerste query...

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
nenne schreef op 02 juni 2004 @ 12:59:
[...]


Nee ik heb een query gemaakt in VB6 waarmee ik gegevens ophaal, en een andere query waarmee ik een tabel update met de gegevens uit de eerste query...
Zou je dan je update query eens willen posten?

Never underestimate the power of


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Aan de kolom met het iif statement wijs je geen naam toe; dat zou kunnen met

..., iif([...]) AS veldnaam, [...]

Maar misschien begrijp ik je sowieso niet. Ik snap dat updaten van een tabel met een select niet zo goed. Als je alle NULL waarden wilt vervangen door onbekend dan zou dit toch gewoon moeten werken?
code:
1
UPDATE perceel SET straat="Onbekend" WHERE (straat Is Null);
(in alle respect voor de opmerkingen van curry over het vervangen van NULL waarden.)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • nenne
  • Registratie: Juni 2004
  • Laatst online: 06-06-2024
Niesje schreef op 02 juni 2004 @ 13:19:
Aan de kolom met het iif statement wijs je geen naam toe; dat zou kunnen met

..., iif([...]) AS veldnaam, [...]

Maar misschien begrijp ik je sowieso niet. Ik snap dat updaten van een tabel met een select niet zo goed. Als je alle NULL waarden wilt vervangen door onbekend dan zou dit toch gewoon moeten werken?
code:
1
UPDATE perceel SET straat="Onbekend" WHERE (straat Is Null);
(in alle respect voor de opmerkingen van curry over het vervangen van NULL waarden.)
Tweakers, ik heb de oplossing al gevonden. :*)

Bedankt voor alle reacties! _/-\o_
Pagina: 1