Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[VBA] Esecuzione query da codice

716 views
Skip to first unread message

Lawrence Oluyede

unread,
Apr 21, 2002, 12:55:26 PM4/21/02
to

Dopo un sacco di modifiche...la mia ultima idea per
l'inserimento è stata quella di fare tutto da codice

ma come si fa ad eseguire una query di accodamento da
codice?

ps. ho già creato la query..devo solo eseguirla

--
Lawrence Oluyede
rhy...@myself.com

Lawrence Oluyede

unread,
Apr 21, 2002, 12:58:43 PM4/21/02
to
Lawrence Oluyede <rhy...@myself.com> wrote:

[..cut..]

mi sono dimenticato di aggiungere che la query è creata
interamente via codice...in base a dei parametri ricavati da
una maschera

--
Lawrence Oluyede
rhy...@myself.com

Massimo Tin

unread,
Apr 21, 2002, 1:47:00 PM4/21/02
to

Lawrence Oluyede <rhy...@myself.com> wrote in message
psr5cu429g4noa9ap...@4ax.com...
docmd.openquery "nomedellaquery"
o c'è qualcosa ke nn ho capito..?
Ciao Max


Lawrence Oluyede

unread,
Apr 21, 2002, 2:41:47 PM4/21/02
to
"Massimo Tin" <max...@tin.it> wrote:

>o c'è qualcosa ke nn ho capito..?

cosi apre una query creata in Access

io creo una query nel codice nel seguente modo:

Dim today As Date
Dim money As Currency
Dim materiale As String
Dim nazione As String
Dim query As String
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Set dbs = CurrentDb

today = Date
money = txtMoney.Text
materiale = ccMateriale.Text
nazione = ccNazione.Text

query = ""
query = query + "INSERT INTO Vendita ( Data, Importo,
CodiceMateriale, CodiceNazione ) "
query = query + "VALUES (" + Date + ", [inserisci
importo in €], ("
query = query + "SELECT Materiale.ID FROM materiale "
query = query + "WHERE Materiale.Descrizione = " +
materiale + " ), "
query = query + "SELECT Nazione.ID FROM nazione "
query = query + "WHERE Nazione.Nome = " + nazione + " )"
query = query + " ) "

--
Lawrence Oluyede
rhy...@myself.com

OndaMax

unread,
Apr 21, 2002, 6:32:24 PM4/21/02
to
"Lawrence Oluyede" ha scritto nel messaggio ...

> cosi apre una query creata in Access
> io creo una query nel codice nel seguente modo:

DoCmd.RunSql (QuerySql)

QuerySql corrisponde alla tua variabile "query" ...

Marco


Lawrence Oluyede

unread,
Apr 22, 2002, 9:12:53 AM4/22/02
to
"OndaMax" <ond...@liberox.it> wrote:

>QuerySql corrisponde alla tua variabile "query" ...

grazie mille...

ora però quando clicco mi dà quest errore:

"Impossibile fare riferimento ad una proprietà o ad un
metodo per un controllo a meno che non abbia lo stato
attivo."

Che significa?

--
Lawrence Oluyede
rhy...@myself.com

OndaMax

unread,
Apr 22, 2002, 11:08:52 AM4/22/02
to
Il 22 Apr 2002, 15:12, Lawrence Oluyede ha scritto:

>ora però quando
clicco mi dà quest errore:

>"Impossibile fare riferimento ad una
proprietà o ad un
>metodo per un controllo a meno che non abbia lo stato
>attivo."

>Che significa?

.
Non so, ma non sembra dipendere
dall'Sql.
Direi che c'è qualcosa che non gli piace su un controllo di
maschera. Dove ti si blocca il codice ?
.
Marco

--------------------------------
Inviato via http://usenet.iol.it

Lawrence Oluyede

unread,
Apr 22, 2002, 12:08:55 PM4/22/02
to
ond...@liberox.it (OndaMax) wrote:

>Dove ti si blocca il codice ?

non si blocca...da quell'errore..

il codice incriminato è questo:

Dim today As Date ' per la data odierna
Dim money As Currency ' per l'importo
Dim materiale As String ' per il materiale
Dim nazione As String ' per la nazione
Dim query As String 'per la query

today = Date ' leggo la data odierna
money = txtMoney.Text ' ricavo da una textbox
materiale = ccMateriale.Text ' ricavo da una listbox
nazione = ccNazione.Text ' ricavo da una listbox



query = ""
query = query + "INSERT INTO Vendita ( Data, Importo,
CodiceMateriale, CodiceNazione ) "

query = query + "VALUES (" + today + ", money, ("


query = query + "SELECT Materiale.ID FROM materiale "
query = query + "WHERE Materiale.Descrizione = " +
materiale + " ), "
query = query + "SELECT Nazione.ID FROM nazione "
query = query + "WHERE Nazione.Nome = " + nazione + " )"
query = query + " ) "

' la query soprastante inserisce i dati calcolati nella
tabella Vendita

DoCmd.RunSQL query 'eseguo la query

grazie mille in anticipo....

--
Lawrence Oluyede
rhy...@myself.com

OndaMax

unread,
Apr 22, 2002, 7:00:28 PM4/22/02
to
"Lawrence Oluyede" ha scritto nel messaggio ...

> il codice incriminato è questo:


>
> Dim today As Date ' per la data odierna
> Dim money As Currency ' per l'importo
> Dim materiale As String ' per il materiale
> Dim nazione As String ' per la nazione
> Dim query As String 'per la query
>
> today = Date ' leggo la data odierna
> money = txtMoney.Text ' ricavo da una textbox
> materiale = ccMateriale.Text ' ricavo da una listbox
> nazione = ccNazione.Text ' ricavo da una listbox

Ho paura che la proprietà Text ti stia creando dei problemi, dato che
funziona solo se il controllo è attivo (ho anche dei dubbi che sia
applicabile sulle listbox). Fai riferimento direttamente ai valori dei
controlli togliendo il Text; anche sulle listbox dovrebbe essere OK se il
valore Descrizione è quello associato al controllo.

today = Date ' leggo la data odierna

money = txtMoney ' ricavo da una textbox
materiale = ccMateriale ' ricavo da una listbox
nazione = ccNazione ' ricavo da una listbox

Per semplificare suggerirei addirittura di rinunciare alle variabili di cui
sopra per passare all'Sql direttamente i valori dei controlli di maschera.

Sul codice query Sql non mi pronuncio perchè so troppo poco riguardo alla
tua struttura dati (formati campi tabelle, ID numerico o alfanumerico,
ecc.). Però intravedo già possibili fonti di errore. Ad esempio nella
gestione della data che sarebbe da gestire col format(today, "mm/dd/yy") e
da racchiudere con #. Oppure con alcune variabili stringa in cui mancano gli
apici.
Inoltre trovo un po' complicato l'annidamento di Sql per estrarre gli ID
Materiali e Nazione ... in fondo quell'ID potresti già organizzarlo in
listbox e catturarlo con la proprietà Column [ccMateriale.Column(0)].

Suggerimento ... metti uno Stop prima dell'esecuzione dell'Sql e controlla
dalla finestra immediata la sintassi della query che hai costruito. Con un
po' di pazienza dovresti poterla correggere.
Altrimenti, riposta per chiarimenti ...

Marco


0 new messages