Problemi con una query

mercoledì 03 novembre 2010 - 17.34
Tag Elenco Tags  .NET 3.5  |  Windows 7  |  Visual Studio 2008  |  Access (.mdb)  |  Office 2007  |  Firefox  |  CSS 3.0

pigeonit Profilo | Newbie

Buonasera a tutti ho questo problema:
Nel codice di una maschera ho messo questo codice:

Private Sub Form_Current() Dim Rst As dao.Recordset Dim StringaSQL As String StringaSQL = "SELECT Orario_corso.Id_corso_orario FROM Orario_corso" & _ " WHERE (((Orario_corso.Id_corso_orario)= '" & Me.Id_corso & "'));" Set Rst = CurrentDb.OpenRecordset(StringaSQL) If Not (Rst.BOF And Rst.EOF) Or IsNull(Rst.Fields(0)) = True Then Me.pulsante_crea_giorni.Enabled = False End If Set Rst = Nothing End Sub

tuttavia quando lo eseguo mi da l'errore 3464 "Tipi di dati non corrispondenti nell'espressione criterio".

Id_corso è un contatore
Id_corso_orario è un numero

Se al posto di '" & Me.Id_corso & "' metto un numero non mi da l'errore ma logicamante la query non è più dinamica

Qualcuno sa aiutarmi?
P.S. Dimenticavo si tratta di un database di access

dinoxet Profilo | Senior Member

prova così :

StringaSQL = "SELECT Orario_corso.Id_corso_orario FROM Orario_corso" & _
" WHERE (((cast(Orario_corso.Id_corso_orario as int))= '" & Me.Id_corso & "'));"




DINOXET
__________________________________________
impossible is only a word

ma_di Profilo | Junior Member

Secondo me Id_corso deve prima essere trasformata in stringa, e poi concatenata.
Ciao.

pigeonit Profilo | Newbie

Grazie per le risposte

per Dinoxet:
Ho provato anche se entrambi i campi sono già interi ma non funziona mi da errore 3075 "errore di sintassi (operatore mancante) nell'espressione della query (((cast(Orario_corso.Id_corso_orario as int)='1'))

per ma_di:

Non ho capito casa intendi

ma_di Profilo | Junior Member

dim st as string

st=Me.Id_corso.tostring

StringaSQL = "SELECT Orario_corso.Id_corso_orario FROM Orario_corso" & _
" WHERE (((Orario_corso.Id_corso_orario)= '" & st & "'))"

pigeonit Profilo | Newbie

Grazie ancora per l'interesse che mi state dimostrando.

Per ma_di

ho provato ottengo questo errore
Impossibile trovare il metodo o il membro dei dati (errore 461)

lbenaglia Profilo | Guru

>Id_corso è un contatore
>Id_corso_orario è un numero

Allora non devi racchiuderlo tra apici:

StringaSQL = "SELECT Id_corso_orario FROM Orario_corso" & _ " WHERE Id_corso_orario = " & CStr(Me.Id_corso) & ";"

Ad ogni modo se vuoi un consiglio ed evitare alla radice attacchi di SQL Injection, definisci una query parametrica che andrai a referenziare via ADO (OleDbCommand) o DAO(QueryDef) come negli esempi allegati:
http://groups.google.com/group/it.comp.www.asp/msg/aec990d4b4eb2e85?hl=it
http://blogs.dotnethell.it/sandro/Query-parametriche-con-DAO__15415.aspx

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

pigeonit Profilo | Newbie

Grazie a tutti

Grazie lbenaglia mi sei stato veramente d'aiuto

Bruno
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5