Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con Query Access e funzione VBA

Ho creato una query in un database di access che utilizza una funzione
VBA salvata in un modulo del database.
Se eseguo questa query dall' interno di Access non si verificano
problemi, ma se la eseguo da un programma VB (utilizzando gli ADO) mi
appare il seguente errore:
Funzione 'xxxx' non definita nell'espressione.
Dove xxxx è proprio il nome della mia funzione scritta in VBA.
Qualcuno sa dirmi il perchè appare questo errore?
Grazie in anticipo,
Alessio.

 Qualcuno sa dirmi il perchč appare questo errore?
Si e` da poco esaurito un thread sull'argomento, lanciato il
10/7/2000 17.03 da Laura con l'oggetto "QUERY", invero poco
significativo (scusa Laura, ma approfitto sapendo che non puoi
leggere i miei post;-), cui hanno partecipato VincePik,
effedipi, Roal Zanazzi e il sottoscritto. Penso che non
dovrebbe esserti difficile recuperare tali messaggi.
In sintesi (e con linguaggio improprio): l'errore appare
perche' la stringa viene interpretata da sql cosi` come la
riceve da vb, e ne' vb ne' sql sono a conoscenza
dell'esistenza di quella funzione. Dovresti informarli... o
ricopiandola nel tuo progetto o richiamandola con un
riferimento ad access, ma questo implicherebbe installare
access insieme al tuo applicativo.
Potrebbe anche essere necessario ripensare la query. Dipende
da cio` che fa la tua funzione.
--
Ciao.
Maurizio

 Alessio.

Ciao. Maurizio
Grazie per la risposta!
Ciao, Alessio.

Mi sono copiato la funzione nel mio progetto VB e tutto č andato a posto.
Grazie della risposta, ora provo!
Ciao, Alessio.

 Suggerimenti su come dovrei ripensare la query?
Ripeto. Le soluzioni possibili sono (almeno) tre:
1. copiare la funzione nel progetto vb;
2. fare riferimento ad Access nel progetto vb;
3. ripensare la query.
Fossi in te adotterei la prima. Nel caso specifico la terza
sarebbe la soluzione ideale perche' da cio` che di nuovo
scrivi in questo post si capisce che non serve una funzione ma
qualcosa del tipo:
    "SELECT" _
    " Left([Campo1],5) AS LUNGHEZZA," _
    " Mid([Campo1],7,5) AS LARGHEZZA," _
    " Right([Campo1],5) AS ALTEZZA " _
    " FROM Tabella1;"
--
Ciao.
Maurizio

    " FROM Tabella1;"
Purtoppo i numeri non hanno lunghezza fissa, ma possono essere di
varia lunghezza. Nelle funzione Mid, Left e Right dovrei utilizzare
una funzione interna che mi ritorni la posizione della 'X' nella
stringa. Questa funzione non l'ho trovata (non è che sia molto pratico
di VB!). Esiste?
Ciao, Alessio.

 Purtoppo i numeri non hanno lunghezza fissa, ma possono
essere di varia lunghezza. Nelle funzione Mid, Left e Right
dovrei utilizzare una funzione interna che mi ritorni la
posizione della 'X' nella stringa. Questa funzione non l'ho
trovata (non è che sia molto pratico di VB!). Esiste?
Ho capito... Fai cosi`, allora:
    "SELECT" _
    " Campo1," _
    " Mid$([Campo1], InStr([Campo1], "X") + 1) AS Espr1," _
    " Left$([Campo1], InStr([Campo1], "X") - 1) AS LUNGHEZZA,"
_
    " Left$([Espr1], InStr([Espr1], "X") -1) AS LARGHEZZA, " _
    " Mid([Espr1], InStr([Espr1], "X") +1) AS ALTEZZA"
    " FROM Tabella1;"
SE&O, ovviamente;-)
--
Ciao.
Maurizio

    " FROM Tabella1;"
Grazie della dritta...
Ciao!
Alessio.

 wrote in message
3976e960...@diesel.cu.mi.it...


modulo VB).
Ho copiato il codice SQL creato da Access nella query che cercavo di
chiamare da VB, l' ho incollato come cmdText dell'oggetto ADO command,
ho aperto il recorset ed il risultato è sempre lo stesso!!! (Sempre il
solito errore di funzione non definita...)
Naturalmente anche la funzione incriminata è stata copiata e
dichiarata pubblica in un modulo del progetto...
Boh....in questo momento sono stato "risucchiato" da altri problemi,
per cui non ho tempo di combattere con questo nuovo scherzetto di
Microsoft.... spero di poterlo fare nei prossimi giorni...ti terrò
informato in caso di sviluppi!
Ciao e grazie ancora!!!
Alessio.