Archief - ASP.Net Gegevenstypen komen niet overeen met criteriumexpressie

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Shadir

Legacy Member
Hallo,

Ik ben bezig met het programmeren van een reservatieprogramma in ASP.Net maar toen ik een query wilde maken waarbij ik kijk of de reservering al gedaan is lukt het niet door de fout dat de gegevenstypen niet overeenkomen met de criteriumexpressie. Ik wil via een listbox die uit de databse geselecteerd wordt een vergaderzaal kiezen die ik dan in een andere tabel controleer, ik heb al geprobeerd om het ID van de vergaderzaal te gebruiken, de selectedindex te gebruiken en de selectedvalue te gebruiken maar niets werkt.

De database tabellen die ik gebruik bestaan uit tblVergaderzalen met een Vergaderzaal ID en een naam die ik link via de Vergaderzaal ID aan een tabel Reservering. Het ID is gelinkt met het vergaderzaal veld in de tabel Reservering en toont een dropdownlist in het veld, dit veld wordt als numeriek weergeven.

Dt is de code die ik gebruik:

Dim sqlreserveer As String
Dim cmdreserveer As OleDbCommand
Dim sqlselect, sqlselect2, sqlselect3, sqlselect4 As String
Dim cmdselect, cmdselect2, cmdselect3, cmdselect4 As OleDbCommand
Dim select1, select2, select3, select4 As String

'Kijken of het al geboekte beginuur niet tussen de nieuw ingegeven uren ligt
sqlselect = "SELECT tblReservering.ReserveringsID FROM(tblReservering)WHERE tblReservering.Van >= (#" & (TxtVan.Text) & "#) AND tblReservering.Van <= (#" & (txtTot.Text) & "#) AND tblReservering.Vergaderzaal = ('" & (LstZaal.SelectedIndex) & "');"
cmdselect = New OleDbCommand(sqlselect, dbcon)

'Kijken of het al geboekte einduur niet tussen de nieuw ingegeven uren ligt
sqlselect2 = "SELECT tblReservering.ReserveringsID FROM(tblReservering)WHERE tblReservering.Tot >= (#" & (TxtVan.Text) & "#) AND tblReservering.Tot <= (#" & (txtTot.Text) & "#) AND tblReservering.Vergaderzaal = ('" & (LstZaal.SelectedIndex) & "');"
cmdselect2 = New OleDbCommand(sqlselect, dbcon)

'Kijken of het nieuw ingegeven beginuur niet tussen de al geboekte uren ligt
sqlselect3 = "SELECT tblReservering.ReserveringsID FROM(tblReservering)WHERE (#" & (TxtVan.Text) & "#) >= tblReservering.Van AND (#" & (TxtVan.Text) & "#) <= tblReservering.Tot;"
cmdselect3 = New OleDbCommand(sqlselect, dbcon)

'Kijken of het nieuw ingegeven einduur niet tussen de al geboekte uren ligt
sqlselect4 = "SELECT tblReservering.ReserveringsID FROM(tblReservering)WHERE (#" & (txtTot.Text) & "#) >= tblReservering.Van AND (#" & (txtTot.Text) & "#) <= tblReservering.Tot;"
cmdselect4 = New OleDbCommand(sqlselect, dbcon)

'Db connectie openen, command uitvoeren en Db connectie sluiten
dbcon.Open()
select1 = cmdselect.ExecuteScalar
select2 = cmdselect2.ExecuteScalar
select3 = cmdselect3.ExecuteScalar
select4 = cmdselect4.ExecuteScalar
dbcon.Close()

Het gaat fout op "select1 = cmdselect.ExecuteScalar" Ik weet niet hoe ik mijn database moet controleren.

Kunnen jullie helpen? later op de dag zal ik screenshots kunnen posten indien dit nodig is.

Alvast bedankt,

Shadir

Moto

Legacy Member
Dit lijkt niet te kloppen, lijkt toch alleszins niet op valid SQL
En als het dat wel is, gelieve niet meer te doen

-> "FROM(tblReservering)WHERE"

trouwens zeker nooit ene SelectedIndex gebruiken

Ge zult die queries gewoon beter op eerst de database controleren, dat dus eerst leren

Shadir

Legacy Member
Ik heb die query's al altijd zo gebruikt, het maakt niet uit of er een spatie staat of niet, wat ik zou willen is een oplossing voor de gegevenstype die niet overeen komt

cptKangaroo

Legacy Member
Geven die queries geen Arrays als resultaat, in plaats van String ?

Voor mij is het ook onduidelijk of die AND operatoren bij die WHERE horen of apart, maar ik ken niet veel van SQL zelf.

Jerre Muesli

Legacy Member
De kans dat je ID van het type String is, is (hopelijk) nihil.
Heb je al proberen debuggen? Kijk gewoon wat je dan WEL terug krijgt?

Shadir

Legacy Member
Wat ik wel terug krijg is niets, het geeft gewoon de error dat de waarden niet overeen komen

Recipe4hate

Legacy Member
Heb je SQL server management studio oid?
Wanneer ik een T-SQL query schrijf, test ik deze eerst in zo een programma, omdat deze de waardes direct van de DB haalt en weergeeft.
Voor datums in SQL gebruik ik nooit #. Dat is meer een Access-gebeuren. Ik format mijn datums gewoon zo: yyyymmdd ('20130113').

(hint: je kan hier ook gemakkelijk een stored procedure voor schrijven).

Als je wil, wil ik wel eens inloggen op je SQL server en de queries met de Management studio uitproberen?
Uiteraard moet je dan wel met SQL server werken en niet met een ander type SQL DB.

interwanderer

Legacy Member
In alle waarschijnlijkheid komt de formattering van uw datum in de database niet overeen met de formatering die je meegeeft met uw string.

dit kan je uittesten door een breakpunt te plaatsen op de query in je code.

"hover" dan met je muis over uw string en copieer de query en plak deze rechtstreeks in sql server management studio. je zal de zelfde fout krijgen.

open dan uw tabel en kijk hoe dat de datum er uit ziet. zorg dat je je code aanpast en de datum op dezelfde manier wordt geformateerd.

veel succes.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan