PDA

View Full Version : [vba][access] join query da vba problema


antony85
26-06-2008, 12:44
sto creando un progetto in access 2003 scritto in vba(ado) ke si interfaccia al db oracle.
scrivendo la seguente query attraverso l'editor di oracle la query fuziona,"traducendola" nel formato vba(e assegnando ad esso i valori delle variabili ke vengono prelevate dalle combobox)la query non funzione ed access ritorna l'errore"connessione chiusa o non valida in questo contesto"
le tabelle sono cosi strutturate(admin viene aggiunto da access quando vengono importate le tabelle)

admin_tavolo=
NUMERO_TAVOLO num PK
NUMERO_POSTI num
NUMERO_POSTI testo

admin_prenotazione_ristorante=
ID num PK
DATA_ARRIVO date
TAVOLO_PRENOTATO num
TIPO testo

la query è la seguente

formato sql normale=
select numero_tavolo from tavolo inner join prenotazione_Ristorante on (tavolo_prenotato=numero_tavolo)
where (numero_posti=8 and data_arrivo='25-giu-08' and ubicazione='Interno' and
tipo='Pranzo')

codice vba di access=
Private Sub cmd2_Click()
Dim con As ADODB.Connection
Dim rst As ADODB.Recordset
Set con = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "select numero_tavolo from admin_tavolo inner join admin_prenotazione_Ristorante on (tavolo_prenotato=numero_tavolo) where (numero_posti=" & _
vposti.Value & "and data_arrivo='" & vdata.Value & "' and ubicazione='" & vubi.Value & "' and tipo='" & vtipo.Value & "')"
Do Until rst.EOF
cmb.AddItem (rst.Fields("numero_tavolo"))
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub

john_revelator
26-06-2008, 13:15
Hai provato ad eseguire la query con dei valori "statici", giusto per accertarti che non sia errata?

Non ho mai usato quel formato di data però ad esempio col formato gg/mm/aaaa è necessario prima invertire le posizioni di giorno e mese affinchè la query venga elaborata correttamente.

antony85
26-06-2008, 15:35
anche con valori statici,la query non funziona

akyra
26-06-2008, 15:57
per prima cosa, io proverei a creare una query con quella sintassi (basta copiare e incollare sull'editor) dall'editor delle query di access così da verificare di non aver sbagliato nulla sul codice...

john_revelator
26-06-2008, 16:44
Prova così

select numero_tavolo from tavolo
inner join prenotazione_Ristorante
on tavolo.tavolo_prenotato=prenotazione_Ristorante.numero_tavolo
where numero_posti=8 and data_arrivo='25-giu-08' and ubicazione='Interno' and
tipo='Pranzo'