Toon posts:

[VBScript] Sql query uitvoeren om NULL te testen *

Pagina: 1
Acties:
  • 173 views sinds 30-01-2008

Verwijderd

Topicstarter
Dear tweakers,

Ik heb een probleem waar ik al enige tijd mee aan stiefelen ben.

Ik wil vanuit een vbscript een query uitvoeren.

Hoeft niet persé query te zijn, maar ik moet weten of in een bepaalde tabel, of query een waarde waarde`s staan. Dus een

NULL, of NOT NULL check.

hoe zou ik dat kunnen doen ?, waarde`s uit een tabel krijg ik wel aangeroepen vanuit een vbscript, maar niet waardes van een query.

Grtz,

Rob

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Euhm, lekker duidelijk... Ervanuitgaande dat je een connectieobject hebt voor de database is het niet meer dan dit:
Visual Basic .NET:
1
2
query = "SELECT veld FROM tabel WHERE waarde IS NULL"
RecordSet.Open query, conObj

Klaar? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
ehm.. en als je er niet van uitgaat dat ik een connectieobject heb ?

of bedoel je:
code:
1
2
3
4
   Dim dbs As DAO.Database
   Dim rst As DAO.Recordset
   Set dbs = CurrentDb
   Set rst = dbs.OpenRecordset("TABEL")



Ter verduidelijking:

code:
1
2
3
4
5
6
7
8
9
if (querywaarde) = NULL then

msgbox"Querywaarde is niet aanwezig"

else

hele berekening op basis van querywaarde

end if


Mijn probleem is dat ik het niet voor elkaar krijg om de = NULL regel goed te laten werken.

[ Voor 42% gewijzigd door Verwijderd op 09-09-2004 15:27 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik snap er geen zak van
Geef nou eens de volledige relevante code (dus ook het uitvoeren van de query enzo)
(Je bent trouwens al eerder op de quickstart gewezen, waarom kost dat nou zoveel moeite?)

[ Voor 30% gewijzigd door .oisyn op 09-09-2004 15:33 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Ik heb VBScript zelf alleen in ASP gebruikt, hier heb je wat ASP code van mij waar je misschien wat mee kan.

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
    'Klaarmaken van de database
    Set rs = Server.CreateObject("ADODB.RecordSet")
    Set conObj = Server.CreateObject("ADODB.Connection")

    'Databaseconnectie openen
    gebrDBconStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=E:\Inetpub\fdg\nvknf\data\forum.mdb;"
    conObj.Open gebrDBconStr

    query = "SELECT * FROM gebruiker WHERE [gebruiker].[naam] = '" & naam & "'"
    rs.Open query, conObj, 1, 2, 1

In principe zal dit buiten ASP niet anders zijn denk ik.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
oké...

Situatie is als volgt: ik moet vanuit een access administratie database naar een boekhoud programma (Exact) exporteren. De 2 administraties bestonden allang naast elkaar, maar niet met elkaar. Wat als gevolg heeft dat ze 2 verschillende debiteurenbestanden hanteren.

Wat ik dus moet controleren voordat ik exporteer is dat er daadwerlijk een Exact Debiteurennummer aanwezig is voordat hij exporteerd.

Ik had het volgende in gedachten:

code:
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
Private Sub exporteer()
DoCmd.SetWarnings False

If (QUERYWAARDE) = NULL Then

msgbox "debiteurennummer Exact is niet aanwezig"

else

If msgbox("Wilt u correspondentie aan dit factuur toevoegen?", vbYesNo) = vbYes Then
    DoCmd.OpenForm "correspondentie_add"
    DoCmd.OpenQuery "factuurexport_maaktabel"
    DoCmd.OpenQuery "offsubselect"
    DoCmd.OpenQuery "exportexactquery"
    DoCmd.OpenQuery "factuurexport_deltabel"
    DoCmd.RunSQL "UPDATE off SET off.isgeexporteerd = True WHERE ((([off]![offertenummer])=[Formulieren]![hoofdform]![exportdefinities].[Formulier]![offertenummer]));"
    offsubdetails.Requery
    factuur_totaal.Requery
    offertenummer.Requery
    selectie_exportexact.Requery
Else
    DoCmd.OpenQuery "factuurexport_maaktabel"
    DoCmd.OpenQuery "offsubselect"
    DoCmd.OpenQuery "exportexactquery"
    DoCmd.OpenQuery "factuurexport_deltabel"
    DoCmd.RunSQL "UPDATE off SET off.isgeexporteerd = True WHERE ((([off]![offertenummer])=[Formulieren]![hoofdform]![exportdefinities].[Formulier]![offertenummer]));"
    offsubdetails.Requery
    factuur_totaal.Requery
    offertenummer.Requery
    selectie_exportexact.Requery
    
End If
End If

Exit Sub
End Sub


Maar die Querywaarde=null krijg ik dus niet...

zo beter ?

[ Voor 6% gewijzigd door Verwijderd op 09-09-2004 15:39 ]


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

curry684

left part of the evil twins

Ik snap echt je probleem niet. Je kunt toch queries uitzetten? Waarom kun je deze (simpele) query dan ineens niet uitvoeren? :?

Professionele website nodig?


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
2 puntjes:

Als je een command object hebt waarmee je queries kunt uitvoeren, dan heb je dus ook een connection object.
Ik baseer dit op deze regel in je code:
code:
1
DoCmd.RunSQL "UPDATE off SET off.isgeexporteerd = True WHERE ((([off]![offertenummer])=[Formulieren]![hoofdform]![exportdefinities].[Formulier]![offertenummer]));"


En ten tweede, VBScript <> VBA, dus de topicstart lijkt niet helemaal goed te zijn.

En los van al dit: Zoals jij een query wilt gebruiken kan volgens mij niet. Je kunt wel een recordset aanmaken met de resultaten van de query en als na uitvoer van de query je recordset zowel EOF=True als BOF=True heeft, dan had je query geen resultaat.

edit:
Tenslotte nog 1 opmerking:
Als oudmedewerker van Exact lopen de kriebels plaatsvervangend over mn rug. Misschien is het een beter idee om Exact Maatwerk erbij te halen om die export/import voor je uit te voeren. Hoewel je dat waarschijnlijk een paar centjes meer kost, draag je daarmee de verantwoordelijkheid voor een correcte import wel over aan een organisatie die daarmee om kan gaan. En dat is beter dan over een half jaar de helpdesk of een accountant te moeten bellen die de steekjes die jij laat vallen weer rechtbreit. :) nofi :)

[ Voor 30% gewijzigd door bigbeng op 09-09-2004 16:28 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 01:20

TeeDee

CQB 241

Visual Basic .NET:
1
2
3
4
5
If Isnull(querywaarde) then
      ... doe je ding
else
      ... doe je andere ding
end if

Je wilt toch gewoon checken op een IsNull?

Ten 2e: als ik het goed zie, check je op (Querywaarde). Volgens mij initialiseer je deze niet eens in je functie.

[ Voor 27% gewijzigd door TeeDee op 09-09-2004 16:46 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Equator
  • Registratie: April 2001
  • Laatst online: 22-05 19:52

Equator

Crew Council

🦺#Rodekruis #whisky #barista

code:
1
2
3
4
5
If QUERYWAARDE = "" Then
   MsgBox "Debiteurennummer Exact is niet aanwezig."
Else
   ....
End If

Zorg wel dat QUERYWAARDE een variabele is die eerder in je code gedimensioneerd is.

Verwijderd

Topicstarter
Nou de exportmodule op zich zelf werkt al uitstekend!!

alleen deze check wil ik in de db inbouwen.

ik heb de code nu sterk uitgedund, alleen om te testen.

code:
1
2
3
4
5
6
7
8
9
10
Dim SQL As String
SQL = "SELECT COUNT(iD) from KlantExactDebnrLoos;"

If SQL >= Null Then

    DoCmd.SetWarnings False
    msgbox ("JAAAAAHHHHHH!!!!!!!!!!!!!")
Else
    msgbox ("NEE")
End If


Wat je met SQL ook doet, ookal is het een tabel waar 10 records instaan, ik krijg telkens als ik deze code uitvoer: NEE!

dus ik snap het echt even niet...

WIe wel :?

Rob

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

SQL is een string en geen recordset. Verder krijg je sowieso een getal terug, dus zal het geen 0 zijn.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 01:20

TeeDee

CQB 241

Ik neem aan dat je van te voren een Connection + Recordset aanmaakt e.d.
Visual Basic .NET:
1
If strSqlResult > 0 then

of
Visual Basic .NET:
1
2
3
if recordset.EOF then
...
end if


misschien een idee om nog eens terug de boeken in te duiken?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
oké voor de duidelijkheid

moet ik dan DIM sql as String of as Recordset doen ?

Watn nu ik hem als een recordset declareer, geeftie de volgende fout:
Compileerfout: ongeldig gebruik van een eigenschap:

code:
1
SQL = "SELECT Opdrachtgever from KlantExactDebnrLoos;"


ik ben dom geloof ik...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

Mja, dit heeft op deze manier geen zin. Indien we dit willen uitleggen, moeten we een uitleg gaan geven over de basis van VBScript en de verschillen tussen een string en integer bij wijze van spreken gaan uitleggen.

Het lijkt er op dat je absolute basiskennis mist en dingen gaat doen waar je nog helemaal niet aan toe bent qua kennis. Geen probleem, maar je blijft vastlopen.

Een goedbedoelde tip: Stop waar je nu mee bezig bent en neem een aantal tutorials door over VBScript en connecties maken met een database. Hoe je een connection maakt, een recordset vult en deze gaat uitlezen.

Programming & Webscripting is er niet voor bedoeld om zaken te gaan beschrijven welke in een tutorial staan. Daar begint het steeds meer op te lijken, vandaar dat deze dicht gaat. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.