View Full Version : Info sul metodo Find in ADO
:mc: Salve a tutti.
Sono difronte a un piccolo problema.
La seguente stringa in visual basic docrebbe essere corretta sintatticamente, ma genera un errore di run time.
MyTable.Find ("Codice Prodotto = ' " & txtelem(0).Text & " ' ")
In pratica io volevo trovare nella tabella del mio database se il codice del prodotto non venga ripetuto.
Sapete consigliarmi?
Grazie per il vostro interessamento.
Saluti da prodan
Che errore viene generato?
... sei sicuro che txtelem(0).Text non contenga degli apici (Virgoletta singola) ... perchè in questo caso bisogna rimpiazzarle con doppi apici
Che errore viene generato?
... sei sicuro che txtelem(0).Text non contenga degli apici (Virgoletta singola) ... perchè in questo caso bisogna rimpiazzarle con doppi apici
Questa è la stringa che ho scritto:
MyTable.Find ("Codice Prodotto = ' " & txtelem(0).Text & " ' ")
E l'errore di run time che viene generato è il 3001.
Forse proverò con una SELECT se la find non funziona e poi credo che sia poco efficiente. Ma però sono cmq interessato a capire come funziona il metodo find, perchè nella guida msdn non è molto chiaro.
txtelem(0).text come penso che tu abbia capito è una text box in cui dovrei insrire un codice che verrà immesso nella tabella del database.
Non avendo utilizzato come chiave primaria un campo ID di tipo contatore proprio perchè il codice deve essere inserito dall'utente in base a quello dei propri prodotti.
Quindi quale può essere la causa di quell'errore?
:muro:
A\|dR3\V
08-04-2003, 10:08
1. prova a mettere i + al posto degli &
2. se anche cos' non dovesse funzioanre, prova a memorizzarti su una variabile la stringa della textbox usando la funzione str() es:
a = str (txtelem(0).Text)
3. se anche così ti dovesse dare dei problemi, davanti all'str mettici un trim
a = trim (str (txtelem(0).Text))
non so xchè, ma la funzione str() aggiunge uno spazio davanti alla stringa, mentre il trim leva lo spazio (puoi farlo solo se in txtelem(0).Text ci sono dei numeri, se nella text ci sono dei caratteri non credo che possa funzionare, xchè eliminerebbe anche gli spazi al suo interno).
ciao.
Concordo con quanto scritto da 'A\|dR3\V'
L'errore 3001 è il seguente:
The application is using arguments that are of the wrong type, are out of acceptable range, or are in conflict with one another.
Il che significa che il filtro che stai eseguendo utilizza un criterio che non è compatibile con il valore dei campi.
Ad esempio imposti un filtro di tipo stringa ad un campo numerico
Es: .filter = "CampoNumerico = 'TESTO'"
Prova a verificare se la tipologia del campo 'CodiceProdotto' accetta valori stringa / Null ecc...
Non funziona ne con la sostituzione dei & con i +, ne utilizzando la Trim(Str(txtelem(0).Text)) con tutte e due le funzioni viene generato l'errore di run time 13.
Il campo ne ldatabase access è di testo e nel visual basic ho impostato il dataformat come generale.
Ma non funziona nulla
Ops... avevo letto di fretta!
l'istruzione STR() ... è completamente inutile perchè serve per convertire un formato numerico in un formato Variant/Stringa.
Nel tuo caso avendo a che fare con dei controlli textBox txtelem()
basta che usi
Trim(txtelem(0).Text)
mi ero confuso con l'istruzioen Cstr() che conversione un'espressione in formato stringa.
Con la trim genera l'errore di run time 3001.
Non so proverò con una select.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.