Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Come si fa una query su un campo numerico di Access 97?

La domanda e' meno cretina di quello che sembra. Forse la risposta
sara' cretina --nel senso che il problema e' un cretinata--, ma io non
ci cavo i piedi :|
Situazione: in risposta a un click in una combo, faccio una query  in
una tabella --cioe', clicco per selezionare il tipo di carrello e
faccio una select per le portate disponibili-- e va tutto ok. Poi
clicco su un'altra combo --quella delle portate-- e faccio una query
in una tabella --cioe', clicco per selezionare la portata e faccio una
select per le altezze di sollevamento disponibili-- e non funziona.
Il codice e' assolutamente identico per le 2 query, salvo che nella
seconda ho una WHERE con 2 clausole in AND, perche' devo scegliere le
altezze di sollevamento relative sia alla serie selezionata che alla
portata selezionata.
Il codice che uso per la seconda query e':
*****
...
     IstruzioneSQL = "SELECT DISTINCT sollevamento_forche " _
        & "FROM macchine_standard " _
        & "WHERE serie='" & TipoDaCercare _
        & "' AND portata_nominale='" & PortataDaCercare _
        & "';"
 
    'seleziono il dns su cui fare la query
    DSN = "DSN=dBIcem;UID=icem;PWD=;"
 
    'inizializzo e apro la connessione al database
    Conn1.ConnectionString = DSN
    Conn1.Open
 
    'inizializzo il command per la query
    Set Cmd1.ActiveConnection = Conn1
    Cmd1.CommandText = IstruzioneSQL
 
    'apro il recordset
    Rs1.Open Cmd1, , adOpenKeyset, adLockOptimistic
...
*****
Ecco, qui si blocca --sulla rs1.open-- e mi indica l'errore runtime:
"Tipi di dati non corrispondenti nell'espressione criterio"
che non mi dice un gran che'... Preciso che le stesse query su
PostgreSQL vanno a buon fine, ma per i test quando il server non e'
disponibile devo usare un db di Access sul portatile, sempre comandato
via ADO basandomi su un DSN di sistema configurato come mi serve.
Per darvi un paio di informazioni in piu', il tipo di campo indicato
in Access e' "numerico" e specificato come "intero lungo".
Nella colonna serie ho stringhe del tipo "TE", "TP" e cosi' via,
mentre nella colonna portata_nominale ho numeri tipo "1000", "1300",
"5000" e cosi' via e in quella sollevamento_forche, che e' quella che
sembra dare problemi ho numeri tipo "167" "320" "470" "590", ecc...
Vi prego di aiutarmi non appena potete perche' sto impazzendo...
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro RomagnoloŽ, diffidate dalle imitazioni!
 Opel/ECC Calibrezio EVO-V --- Kawasaki "Gas Gas" ZZ-R 1100
 ICQ# 36893168 - IRCNet: bugbarbeq, @ on #linux-it & #NetBSD

se ho capito bene nella query se la condizione è su un campo numerico non
devi inserirlo tra apici .
ES:"select TuaTabella.tuoCampoNumerico From TuaTabella where
tuoCampoNumerico = 1000"

        & "';"
Mi
sembra di aver letto che il campo incriminato è un numerico, mentre nella
query lo stai passando come stringa...questo "PortataDaCercare" è un
numero? Non devi mettere gli apicetti...
Saluti...
--------------------------------
Inviato via 
http://usenet.iol.it
 

Se è numerico devi togliere le virgolette...se ho ben capito serie è stringa
(quindi è corretto), mentre portata_nominale è numerico, diventa quindi "and
portata_nominale="&PortataDaCercare&";"

Grazie a tutti: il problema era proprio che avevo incluso tra apici un
campo di tipo numerico.
PostgreSQL e' molto permissivo anche a fronte di questo tipo di errore
e quindi, quando lavoravo in rete, non mi accorgevo di questo
problema.
Saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 25, RA, 242, 152
  VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
