SQL expression builder

Status
Niet open voor verdere reacties.

gokusen

Gebruiker
Lid geworden
6 jan 2006
Berichten
13
Hoi allemaal,

ik heb een probleem met die sql expression builder...maakt niet uit wat ik invul..hij blijft een syntax error teruggeven...can't parse blablabla
ik wil namelijk een tijd kunnen opgeven..die zoekt dan tussen tijd1 en tijd2 of hij voorkomt of niet...Als hij voorkomt...dan een msgbox terugsturen dat die tijd al bezet is, en als hij niet voorkomt dat hij dan gewoon die tijd invult..maar heb geen enig idee hoe ik dat moet invullen.

Heeft iemand hier verstand van en wil me daarmee helpen?

Bijvoorbaat dank,

Gokusen
 
Nou is net dat blabla interessant ;) Wat is de query die je nu hebt? Kun je de SQL tekst hier plaatsen?


Grtz,
 
hoihoi :P

nou het is mij nu wel gelukt met "Not Between [Z_begintijd] And [Z_eindtijd]"
Dan geeft hij gewoon een validation tekst dat het bezet is, maar hij is nog niet helemaal waterdicht..want ik wil 2 tijden opgeven en dat hij dan vergelijkt of hij bestaat tussen die begintijd en eindtijd..
Dus als ik als begintijd 5 en eindtijd 10 opgeef, en als testtijd1: 1 en testtijd2: 8, dan geeft hij heel mooi een msgbox met bezet.

als ik testtijd1: 1 en testtijd2: 15 invul, dan accepteert ie dat..maarja..dat is wel logisch..heb alleen een between functie gebruikt. wil alsnog dat hij een foutbericht weergeeft, want de waardes van begintijd en eindtijd zitten tussen de testtijden..

owjee als ik dit teruglees, best wel verwarrend :P volg je me nog?
 
Als ik je goed begrijp zou het zo moeten zijn dat zowel de testtijd1 als de testtijd2 niet in het bereik begintijd en eindtijd moeten liggen.

Als dat zo is heb je nu de helft. Je zou deze controle zowel bij de begintijd als bij de eindtijd neer moeten zetten, dan moet het werken.


Grtz,
 
thnx hij werkt nu wel :P

Maar met getallen is wel makkelijk..moet hem nu omzetten in Date/Time
en dat hij dan gaat zoeken op de al in de database opgeslagen records ipv de velden die ik nu gewoon op dezelfde scherm invul.

Damn...alleen al bij het denken daaraan krijg ik al koppijn :confused:
 
Moet wel kunnen. Een datum kun je net zo goed in een bereik zetten als een getal. Mischien dat je als je door meerdere records moet kijken dat je dan een subquery nodig hebt. In het uiterste geval zou het nog met een stukje VBA (als het access is) of een stored procedure kunnen.

Succes,
 
haha maar als ik sql samen met vb combineer....is het net ietwat te hoog gegrepen voor mij :P
maar toch bedankt voor je moeite :)
Ik ga maandag weer ff aan verder zitten, daarna zie je wel weer nieuwe posts van mij :P
 
hmm ik wil eigenlijk zoiets hebben:

SELECT (Z_begintijd, Z_eindtijd)
FROM zalen
WHERE (Not Between [Z_begintijd] And [Z_eindtijd]) And ([Z_begintijd] Not Between [Z_testtijd1] And [Z_testtijd2]) And ([Z_eindtijd] Not Between [Z_testtijd1] And [Z_testtijd2])

maar dit pakt hij niet...weet niet hoe ik het correct in een expressionbuilder moet zetten.
Deze validation rule heb ik dus eigenlijk in de veld "Z_testtijd2" geplaatst. Daar wil ik zeg maar een datum en tijd invullen, waar hij vervolgens de table zalen afgaat om te checken of die tijden (z_begintijd en z_eindtijd) al bezet zijn.

Weet iemand misschien wat ik fout doe?
 
Het WHERE gedeelte klopt niet:

SELECT (Z_begintijd, Z_eindtijd)
FROM zalen
WHERE
(... Not Between [Z_begintijd] And [Z_eindtijd]) And
([Z_begintijd] Not Between [Z_testtijd1] And [Z_testtijd2]) And
([Z_eindtijd] Not Between [Z_testtijd1] And [Z_testtijd2])

Op de plaats van de puntjes moet iets staan, anders wordt er vergeleken met niets.


Grtz,
 
ik heb nu:

SELECT (Z_begintijd, Z_eindtijd, Z_testtijd1, Z_testtijd2)
FROM zalen
WHERE
(Z_testtijd2 Not Between [Z_begintijd] And [Z_eindtijd]) And
([Z_begintijd] Not Between [Z_testtijd1] And [Z_testtijd2]) And
([Z_eindtijd] Not Between [Z_testtijd1] And [Z_testtijd2])

maar hij blijft de fout geven dat de syntax in de subquery niet goed is.
Ik zie zo gauw niet waar de fout ligt
 
De haakje om het SELECT gedeelte geven de fout. Onderstaande is syntactisch iig goed. Of het juiste resultaat eruit komt weet ik niet ;)

SELECT Z_begintijd, Z_eindtijd, Z_testtijd1, Z_testtijd2
FROM zalen
WHERE
(Z_testtijd2 Not Between [Z_begintijd] And [Z_eindtijd]) And
([Z_begintijd] Not Between [Z_testtijd1] And [Z_testtijd2]) And
([Z_eindtijd] Not Between [Z_testtijd1] And [Z_testtijd2])

Grtz,
 
hehe hij geeft nog steeds een syntax fout aan..iets met parentheses blabla..
hmmz..

Is er geen andere manier om autocheck te doen of een tijd bezet is of niet?
Wil zeg maar een soort boekingsagenda maken, en als iemand een zaal wil huren om bijv. 17:00 uur tot 18:00 uur. Maar die zaal is op diezelfde datum al verhuurd van 16.30 uur tot 17.30 uur.

Hij moet zeg maar een error message teruggeven dat die tijd al bezet is.
Heb een tabel Zaal gemaakt, daar worden alle boekingstijden opgeslagen.
Best wel moeilijk om een sql commando te maken waar je via die tabel "zaal" moet checken of een tijd al reeds geboekt is of niet.
 
De query die ik in mijn laatste antwoord gaf heb ik getest op een simpel databaseje. Die geeft iig geen foutmelding. Dus ergens in je query gaat iets mis. Kun je em nog eens plaatsen?


Grtz,
 
Ik heb nu dit ervan gemaakt:

="SELECT begintijd, eindtijd FROM zaal WHERE eindtijd BETWEEN #" & "begintijd" & "# AND #" & "eindtijd" & "#"

Hij geeft geen foutmeldingen meer. Maar ik weet niet precies wat deze regel precies doet,
want wat ik ook voor tijd invul, hij geeft altijd die validation text aan wat ik heb ingevuld.
Hij geldt dus altijd.

Er hoort een subquery erachter, maar ik geen idee wat er in de subquery moet.
Select (begintijd, eindtijd) From zaal WHERE (Select.. ?)
Kan niet de juiste commando vinden om de begin- en eindtijden in de opgeslagen tabel (zaal) op te vragen en te vergelijken of hij al bezet is.
 
Laatst bewerkt:
Hij gaat nu valideren tegen letterlijk #begintijd# en #eindtijd#.

Dat kan ie niet vertalen naar een datum, daar moet iets van een variabele of functie staan die de begin- en eindtijd oplevert.


Grtz,
 
hm ok, ik heb nu zeg maar de datum eruit gehaalt..dus als shorttime ingesteld.
Hoef nu zeg maar alleen de tijd in te vullen. bv. 17:00
is er een passend sql scriptje ervoor of kan ik dit ook doen in visual basic?
Alleen weet ik niet hoe je via visual basic info uit een tabel kan oproepen
 
Gegevens uit de database in VBA gebruiken kan met ADO. Door een connectie op te bouwen en vervolgens met een recordset aan het werk te gaan. Uit het hoofd getikt:

Code:
dim cnn as ADODB.connection
dim rst as new ADODB.recordset
dim strSQL as string

strSQL = "SELECT data FROM tabel"
set cnn = currentproject.connection 'Bij gebruik in access, anders moet je een connectstring gebruiken, zie hiervoor http://www.connectionstrings.com/
rst.open strSQL, cnn, adOpenStatic 'Voor een read-only recordset
rst.movefirst
waarde = rst.fields(1)
rst.close
set rst=nothing
cnn.close
set cnn = nothing

Het is niet volledig en loopt niet etc, maar als je ergens tegenaan loopt horen we het wel.


Grtz,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan