Newsgroup: it.comp.appl.access
Titolo: Query, errore assurdo SOLO se eseguita da codice VB, errore "Tipo non corrispondente (errore 13)"

Ho un problema assurdo....
ho una query facile facile
SELECT Config_Prod.metri
FROM Config_Prod
WHERE (((Config_Prod.CONTATORE)=[Forms]![M_creaProd]![ObjProdList]));
che utilizza il parametro     [Forms]![M_creaProd]![ObjProdList]   che
č una banalissima casella di testo in cui l'utente scrive un numero.
Il campo     Config_Prod.CONTATORE     č la chiave della tabella
Config_Prod    ed č generato da access durante l'inserimento dei dati.
Se ho aperta la maschera    M_creaProd   ed ho un valore corretto
nella casella di testo, la query viene eseguita correttamente se la
eseguo con un doppio click dalla finestra del DB.
Perň genera un errore se la eseguo da codice VB, 
Private Sub metraturaUpdate()
  Dim dbs As Database
  Dim qdf As QueryDef
  Dim rec As Recordset
 
    Set dbs = CurrentDb
    Set qdf = dbs.QueryDefs("QM_creaProd - esrai metratura obj
selezionato, da Config_Prod")
 
    Set rec = qdf.OpenRecordset
    Metratura = rec!metri
    dbs.Close
    rec.Close
End Sub
cosě mi dice che non trova un parametro, no so perchč ma vede
[Forms]![M_creaProd]![ObjProdList] come un parametro.
Ho provato di tutto, a scrivere l'sql direttamente nel codice...
'    Set rec = dbs.OpenRecordset("SELECT Config_Prod.metri " & _
                                "FROM Config_Prod " & _
                                "WHERE (((Config_Prod.CONTATORE)=" &
[Forms]![M_creaProd]![ObjProdList] & "));", dbOpenSnapshot)
ho provato a convertire il valore con Clng, Cstr.... ma dice sempre
"Tipo non corrispondente (errore 13)"
ma perchč? perchč? PERCHč????
in extremis ho provato a no nusare un controllo, ma un semplice
parametro, quindi la query era
SELECT Config_Prod.metri
FROM Config_Prod
WHERE (((Config_Prod.CONTATORE)=[pippo]));
ed il codice era
Private Sub metraturaUpdate()
  Dim dbs As Database
  Dim qdf As QueryDef
  Dim rec As Recordset
 
  Set dbs = CurrentDb
  Set qdf = dbs.QueryDefs("QM_creaProd - esrai metratura obj
selezionato, da Config_Prod")
    qdf.Parameters![pippo] = "2"
 
    Set rec = qdf.OpenRecordset
    Metratura = rec!metri
    dbs.Close
    rec.Close
End Sub
e mi da lo stesso stramaledetto incomprensibile errore....
ho provato pure
    qdf.Parameters![pippo] = 2
(senza apici)
ma il risultato non cambia...
inutile dire che se eseguo la query con un doppio click dalla finestra
DB ed inseriso 2 tutto funziona correttamente....
sono bloccato, no so piů che provare...
se non riesco ad aprire quel recordset da codice non posso estrarre i
dati... e sono fregato... :-((
aiutooooooooooooooooooooooooooooooo
ciao, Max.

 ciao, Max.
ma la form M_creaProd l'hai aperta????  quando esegui da VBA?
la collezione Forms contiene le forms APERTE. Se M_creaProd no e'
aperta  (visibile o hidden fa lo stesso) il sistema non riesce a
"vedere" [Forms]![M_creaProd]![ObjProdList] e quindi giustamente pensa
che lo stesso sia un parametro da immettere
a. cara

che lo stesso sia un parametro da immettere
sisi, certo ch è aperta.....
ma il problema si presenta anche se non utilizzo il controllo sulla
form, come nel secondo esempio che riporto....
mi da sempre errore di tipo non valido :-(
ciao, max


In fin dei conti e' un parametro, quello che passi alla Query.
Hai provato a registrarlo nella Query stessa?
Nell finestra di Desing della Query:
tasto destro del mouse, 
parametri, 
dai il nome (esatto) del parametro ed il tipo.
-- 
Tommaso Cafini                  _...@rhein-neckar.netsurf.de_
                                _tca...@gmx.net_
PGP-KeyID       = C922A2B1 
Key fingerprint = 7C 9E 72 C5 11 06 A7 67  54 03 FF 02 4C 90 39 F5

Ho un problema assurdo....
HO CAPITOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
era uno stramaledettissimo riferimento del caXXo che incasinava
access...
per essere precisi er un riferimento a "Microsoft activeX 2.1 library"
che quando ha priorità superiore a "Microsofto DAO 3.6" si vede che
crea dei tipi di oggetti uguali al DAO ma non compatibili.
ed infatti access non riconosceva il tipo recordset....
Ciao, Max

 e mi da lo stesso stramaledetto incomprensibile errore....
(...)
prova con qdf.parameters("Pippo")=2
(...)
così dovrebbe andare.
Per inciso, gli apici usali solo se il parametro è stringa, un contatore è
un long!
--
********************************************
Giorgio B. - P.S. elettronica srl - Udine