PDA

View Full Version : Info sul metodo Find in ADO


prodan
06-04-2003, 20:33
: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

cisky
07-04-2003, 12:39
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

cisky
07-04-2003, 12:41
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

prodan
07-04-2003, 20:54
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.

prodan
07-04-2003, 21:01
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.

cisky
08-04-2003, 12:47
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...

prodan
08-04-2003, 21:42
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

cisky
09-04-2003, 12:52
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.

prodan
09-04-2003, 20:37
Con la trim genera l'errore di run time 3001.
Non so proverò con una select.