Newsgroup: italia.genova.discussioni
Titolo: [HELP Urgent Please]  Visual Basic + SQL su Ms Access

cari esperti colleghi,
ho il seguente problema .
una stringa SQL come segue  =
"select  * from  TABELLA  where COD_PAZIENTE =  1001  ; "   me la accetta
OK.
invece se formulata così =
CICCIO = 1001
"select  * from  TABELLA  where COD_PAZIENTE  =  CICCIO  ; "
mi da errore "ODBC Access Error : sono richiesti 2 parametri ma ne è stato
dato uno solo"
Evidentemente il MS Access Driver ODBC non accetta parametri.
Ma io HO BISOGNO di passare parametri. Mica posso dargli i valori che sono
assegnati nel code.
Per 'isolare' questo errore mi ci sono voluti tre giorni. Non sapevo dove
kakkio era la causa dell'error message.
Ci sono diventato scemo. Poi alla fine sono riuscito a scoprire l'inghippo.
Qualcuno sa come uscirne ???
Grazie mille e baci !!!  :-)))
John.

 "select  * from  TABELLA  where COD_PAZIENTE  =  CICCIO  ; "
prova cosě:
"select  * from  TABELLA  where COD_PAZIENTE  =  "+ CICCIO+"  ; "
Ciao ^_^
Guido

"select  * from  TABELLA  where COD_PAZIENTE  =  "+ CICCIO+"  ; "
Se non ricordo male in ASP si usa &, quindi proverei pure:
"select * from TABELLA where COD_PAZIENTE =  " & CICCIO & ";"
Ma forse sparo una ca..ata. In fondo e' un'ora un po' cosi'...

"select  * from  TABELLA  where COD_PAZIENTE  =  [CICCIO] ; "
Scommetto che non è "CICCIO", ma qualcosa con spazi od altre porcate
in mezzo.
-- 
Nulla è impossibile per chi non lo deve fare.


sorry, mi da errore : non accetta  questa serie di  "apostrofi delimitanti"
l'apostrofo di "+  me lo prende come 'chiusura' del precedente. e quello di
+" di apertura di quello con  ;"

 in mezzo.
Ho riscritto la riga giá vent volte.
No, è proprio il fatto della 'variabile'. Se ci metto un valore, oppure
anche un
valore 'precompilato dal compilatore' allora funziona. Come ad esempio :
dim PAZ as Long
PAZ = 1001
q = " select * from TABELLA  where CODPAZ = "  &  Cstr(PAZ)  &  " ; "
allora funziona, perché la stringa sará
q =  " select * from TABELLA where CODPAZ = 1001 ; "
ma se lo faccio con una variabile String, allora sono cazzi acidi.
Cioè :
Dim IDRICO  = "201"
allora la stringa diventa :
q = " select from TABELLA where IDRICOVERO  = " & IDRICO & ";"
tradotta così : "select from TABELLA where IDRICOVERO = 201 ; "
e mi da errore ovviamente per 'conflict in type' perchè il numero 201 lo
convertirà in numerico mentre invece è alfabetico.
Anche il tentativo di scrivere """201"""  con tre apostrofi, è fallito.
Insomma mi sto rompendo i coglioni con quest SQL interpretato dal driver di
ODBC - MS ACCESS
Comunque grazie per il support.
John.

Anche il tentativo di scrivere """201"""  con tre apostrofi, è fallito.
Generalmente io preferisco usare 
q = " select from TABELLA where IDRICOVERO  = " & chr$(34) & IDRICO &
chr$(34) & ";"
Oppure
q = " select from TABELLA where IDRICOVERO  = """ & IDRICO & """;"
""" sono 3 " ovvero virgolette, ovvero chr$(34)
Mi ha sempre funzionato senza alcun problema. Ma l'ultima versione di
VB che ho usato è la 6, con DAO. ADO mi è sempre parso una
strunzata... ;-)


 
Assolutamente d'accordo. Anzi io avrei fatto a meno pure del Visual Basic.
Ma sono 'costretto' dai requirements ad usarlo.
Hai una idea, così per sfizio, se uno volesse trovare un modo più
'intelligente' per ottenere lo stesso risultato, se è preferibile
trasportarlo su tcl/tk  oppure su python ??? (a parte il C++ ed escluso
Java)  ??
Grazie.
John.

 Java)  ??
Se puoi scegliere il linguaggio, usa PHP (
www.php.net
).
E' facile, gratis e funziona su Windows e Linux.
In caso di dubbi, son qua :-)

Alessandro Topo Galileo wrote:

grazie per l'aiuto, ma io non mi sono ancora 'abituato' alla filosofia degli
'script lanhuages' come php, perl etc. 
Io li considero, magari a torto perchè non li conosco bene, solamente una
evoluzione del DOS o di uno UNIX shell script.
Cioè va bene per organizzare le cose fino ad un certo livello, ma poi si ha
bisogno di un linguaggio 'vero', cioè 'compilato'.
Nemmeno il java mi attira, anche per quello che ho sentito da alcuni che lo
usano regolarmente, e che finiscono per portate tutto in C++.
Il fatto è che io C++ non lo conosco bene, altrimenti mi cimenterei con
quello.
Ma. come dicevo. Sono rimasto 'indietro' coll'esperienza ed i miei sono
magari solo 'pregiudizi' di un 'vecchio'.
Comunque se dovessi optare per il PHP senz'altro mi farò vivo.
Grazie per l'offerta.
Ciao.
John.

 bisogno di un linguaggio 'vero', cioè 'compilato'.
Mica voglio convincerti, però il PHP si può compilare (il compilatore si 
paga, e funzia solo sulla macchina sulla quale lo si installa la prima 
volta) e per lavoro ci ho fatto programmi "gestionali" piuttosto complessi.
Ciao!

 wrote:
Deve essere scritta come sopra .
 
Ho visto che te lo hanno gia' detto, ma confermo
"select  * from  TABELLA  where (COD_PAZIENTE  =  " & CICCIO & " ) ;"
(ove le parentesi non sono indispensabili ma utili - non sto a
dilungarmi sul perche'; 1001 numerico e COD_PAZIENTE sia campo del
recordset TABELLA ). 
Ti avevo mandato tempo fa un esempio in cui si vedeva un caso del
genere, persino piu' complesso, con una data ed altro come parametro,
con uno spezzone dell'istruzione ricavato da un recordset di filtri.
Se lo ritrovi...
Se utilizzi il VBA - cioe' entri in Access e scrivi li' dentro - hai
degli wizard per creare delle condizioni di estrazione in SQL.
Saluti. Ti posso mandare un esempio in cui si vede come costruire una
maschera QBE (interrogazione per esempi): metti i valori che vuoi nei
campi (in connessione AND...) e una routine collegata costruisce
automaticamente l'espressione SQL e quindi ti estrae i record
presentandoteli in una casella di riepilogo... 
LG

trasportarlo su tcl/tk  oppure su python ???
Follìa. Sono linguaggi da hacker. Per chi non lo sapesse, gli hacker
sono quelli che, "con due accettate", ti mettono una toppa ad un
problema. Sono stati poi confusi coi cracker, ovvero quelli che, per
lavoro o sport, "craccano" password e sistemi di sicurezza e si
intrufolano in siti o sistemi informativi.


Alessandro Topo Galileo wrote:

E invece mi hai messo una pulce nell'orecchio. Io questo della compilazione
non lo sapevo.
Ma dimmi per favore, conosci per caso tcl/tk e python ?
come 'compara' il php con questi linguaggi ? Qual'è il suo punto 'forte',
oltre ad essere facilmente trasportabile su molte piattaforme (se lo si
lascia interpretato) ??
E compilato è veloce ? La differenza si vede ?
Grazie per tutte queste info che mi dai.
Ciao.
John.

 Sandra
...eppure io sono innamorato platonicamente (perchè personalmente non ho mai
avuto con esso una 'conoscenza carnale', cioé farmi il culo dalla mattina
alla sera per farlo girare) del gnu c++, unito ai vari 
sistemi grafici per sviluppare GUI...
E' BELLO, è OPEN, ed è GRATIS !  :-))))
Ciao.
John.

 Sandra
maccosamidicimai....io credo che come linguaggio, il C++ non morirà così
presto, nonostante Java e tutte le cose moderne.
Figurati se tutti gli istituti universitari, le istituzioni scientifiche
(pensa che l'India ha deciso di usare Linux come piattaforma ufficiale per
tutti i 'civil servants') pensi che si attaccheranno al tram ? 
Io penso invece che saranno gli hardware manufacturer a doversi adattare a
costruire hardware che sia possibile programmare anche con 'open
languages'.
Altrimenti succederà una 'rivoluzione francese' dei software developers a
livello planetario. Ed io sarò in prima fila ad assistere a tutte le teste
che cadranno dalla ghigliottina !!!
(Mica ce l'ho con Bill Gates, e nemmeno con quelli che voglio 'proteggere i
diritti d'autore' della musica ed altro). Ce l'ho con quelli che
vorrebbero, cioé stanno indirizzando il mondo verso un 'controllo totale
oscuro'. 
(Però, a pensarci bene, Bill Gates sta lavorando in questo senso. Se mi
viene in mente il suo progetto fatto di tantissimi satelliti-cluster che
girano intorno alla terra in modo da 'networkizzare capillarmente' tutto il
pianeta....... :-(((((  )
 

 E compilato è veloce ? La differenza si vede ?
Mai usati tcl/tk e python quindi putroppo non ti so fare una comparazione.
Php va bene se vuoi fare web applications (eventualmente anche 
monoutente, basta usare il browser per usare l'applicazione) o script e 
mi sembra abbastanza semplice da usare.
Aggiungo che il "compilato" in realtà è pure lui multipiattaforma, 
perchè per funzionare richiede sempre che sia installato lo "Zend 
Optimizer" (che è freeware), quindi io per es. compilo su Linux e poi il 
"compilato" gira sia su Linux sia su Windows.
La Zend dice che il compilato va più veloce, ma in pratica nel mio caso 
(che poi mi par di capire sia simile al tuo) la differenza non la vedi 
perchè chi si fa il mazzo è il database (quando gli dai delle query 
pesanti da fare). Io compilo più che altro quando non voglio distribuire 
i sorgenti.
A me piacciono questi linguaggi perchè un programma di 3 righe è lungo 3 
righe, e non succede come con i vari compilatori sotto windoze dove un 
"hello world" viene tanto grande che non sta su dischetto. E se ti va 
male, si pianta pure (con tutte le librerie inutili che ci infila 
dentro, almeno una incompatibilità vuoi che non ci sia?).

 
Il requiem del C l'hanno cantato in tanti, ma molti sono spariti prima 
di lui :-)
Alessandro.

 "compilato" gira sia su Linux sia su Windows.
Con Python e' possibile creare anche l'eseguibile stand-alone (solo per 
windows, credo, ma sono pochi i linux che non includono l'interprete 
python di default).
Alessandro.


Ma tenere conto di queste cose non sarebbe compito di quelli che scrivono i
compilatori ?
Dopo tutto il bello di un linguiaggio di programmazione è la *astrazione*
delle operazioni,
indipendentemente dall'hardware e dal sistema operativo.
I programmatori mica sono 'programmatori di sistema'.
Sono dei poveracci che si fanno un culo così per risolvere un problema.
(ogni riferimento a me non è puramente casuale...)  :-)))


Cara  CAS-SANDRA !!! (<hehehe> oggi ti vedo profetessa di tragedie)
io il futuro non lo vedo così nero. Obbligatoriamente.
Il perchè è questo : io credo veramente che Bill Gates (perchè è senzaltro
lui che tira le redini di tutto questo,
magari insieme all'Intel:) voglia costruire un mondo 'Palladium'.
Ma sono sicuro che avrà molte resistenze e concorrenza.
I governi naziojnali (vedi India, e là ci sono veramente mezzo miliardo di
informatici che stanno invadendo l'Europa. Io ne ho tre nei miei
appartamenti) non ci staranno ad essere 'schiavi' di Microsoft.
Vedevo proprio ieri che l'India è riuscita a fabbricare un vaccino ad un
prezzo di 50 centesimi di Euro, mentre invece quello americano costa 32
dollari.
Quindi c'è da aspettarsi che costruttori indiani e cinesi faranno il 'salto
di qualitá' e strariperanno i mercati con prodotto alternativi Linux.
Per quello che io dico : italiani, questa è una buona occasione per la
nostra industria.
Anzi, io se fossi in Italia organzzerei un consorzio di ditte produttrici di
hardware che girano con Linux.
*ADESSO* è il momento. Veramente. *ORA* si possono mettere le basi per far
rifiorire l'industria hardware
italiana. Non è vero che è detto che vincerà Microsoft. La comunitá di San
Linux è attiva, forte, motivata,
ed ama la libertà ed Indipendenza.  :-))))
ED ORA RITORNIAMO A PALLINO COL THREAD :
il mio problema con lo SQL di MS ACCESS su Visual Basic (non so a chi dare
la colpa)
NON MI ACCETTA PARAMETRI nella stringa-commando  SQL.
Insomma io non ci credo che esista una mancanza così grave : un 'engine' SQL
che non 'communichi'
con l'environment del programma, in modo da poter identificare una
variabile.
Non ci credo.
Qui c'è sotto qualcos'altro. Forse devo re-installare il Visual Basic.
Perché basterebbe questo fatto per *proibire* a tutti i miei alllievi di
usare mai SQL in vita loro !
Qualcuno puo' smentirmi su questo ??? (speeriamo).
Ciao.
John.

 Ma il problema non e' il linguaggio..
Allora non e' un problema ;-)
Alessandro.

parte delle volte scarsamente comprensibili) le italianizzazioni.. :
Ti do ragione. Non solo le italianizzazioni, ma pure le intingolazioni
di sigle inglesi (vedi ad es. la rivista PC Professionale, ne e'
piena; se perdi il treno dei nuovi modi di dire in inglese, non ci
capisci piu' niente).
Pensa che - ricordo di parecchi anni fa - gli addetti riferirvano
d'aver aperto il computer centrale dicendo "Abbiamo daializzato alle
7,30"... Santo cielo, e si e' salvato?
LG 

la colpa) NON MI ACCETTA PARAMETRI nella stringa-commando  SQL.
Non e' possibile. Rileggi la mia risposta nel thread precedente. Avrai
dimenticato qualche apice o messo doppioni di apici per sbaglio.
Guarda bene.
LG

capisci piu' niente).
 Se la cosa rimanesse circoscritta nell'ambito tecnico mi potrebbe anche
star bene, ma mi irrita quando per farti ricoverare devi andare alla
reception, ritirare un coupon e pagare il ticket.  
 Ormai si inglesizza tutto, anche il francese: "Dopo il corso le facciamo
fare uno 'steig' " "Ah, saro' contento di seguire uno 'stasg' " "Si', come
le dicevo seguira' uno 'steig' " "Si', confermo che saro' lieto di
frequentare uno 'stasg' " "Va ben, noi le facciamo seguire uno 'steig' che
e' compreso nel corso, se poi lei vuol fare altre esperienze dovra'
arrangiarsi per conto suo!".  Dialogo reale, pochi giorni fa, riferito da un
familiare, che s'e' trattenuto dal rispondere "Ma io seguo un corso di
computer, mica di recitazione o di canto!"  8-\
	pgg

 "select  * from  TABELLA  where COD_PAZIENTE =  1001  ; "   
Questo vale per i numeri; per le stringhe devi racchiudere tra apici:
select  * from  TABELLA  where COD_PAZIENTE = 'CICCIO' ;
che diventa:
q="select  * from  TABELLA  where COD_PAZIENTE = 'CICCIO' ;"
oppure:
q="select  * from  TABELLA  where COD_PAZIENTE = '"+ variabile +"' ;"
Il problema sorge quando all'interno della stringa trovi caratteri 
'strambi', cioe' apici o doppi apici, che fanno credere a SQL che stai 
chiudendo la stringa.
Es: D'Angelo
v="D'Angelo"
q="select  * from  TABELLA  where COD_PAZIENTE = '"+ v +"' ;"
diventa
q="select  * from  TABELLA  where COD_PAZIENTE = 'D'Angelo' ;"
quindi SQL chiude la stringa cosi:
select  * from  TABELLA  where COD_PAZIENTE = 'D'
E allora che si fa?
1)
Puoi "aumentare" i doppi apici, tenendo conto che i multipli di due si 
azzerano (non e' vero, ma fai finta):
q="select  * from  TABELLA  where COD_PAZIENTE = """+ v +""" ;"
diventa:
select  * from  TABELLA  where COD_PAZIENTE = "D'Angelo" ;
2) se usi vb6 puoi usare Replace per sostituire i singoli"'" con due "''"
v="D'Angelo"
v=Replace(v,"'","''")
q="select  * from  TABELLA  where COD_PAZIENTE = '"+ v +"' ;"
diventa
select  * from  TABELLA  where COD_PAZIENTE = 'D''Angelo' ;
[nota: non ricordo se Replace(v,"'","''") oppure Replace(v,"'","'''")]
Bun travaggiu!

 i quelli di Win32. 
Vero.
Ma almeno qui (NE) le aziende si stanno rompendo i maroni di cambiare 
hardware ogni anno per stare dietro alle fisime 'prestazionali' di MS...
Cambiano architettura sw e sono a posto per un bel po'. Naturalmente 
dipende anche da quello che devono fare, ma un 
gestionale/webserver/TantiBeiAcronimiInglesi lavora molto bene con altre 
architetture.
Poi l'utente usera' sempre il suo bel XP con tante belle figurine 
colorate su una macchina iperprestazionale (ho clienti che hanno server 
'sottodimensionati' rispetto ai client che vi accedono...)

LG wrote:

Purtroppo non vedo nè la tua risposta nè il post di Sandra al quale tu fai
il riferimento.
Sorry.
magari puoi ri-quotarlo ?? che questa volta il mio news-server non 'se lo
mangia' ???
(e pensare che uso news.linuxfan  :-)))))  )
Grazie.
John.

 pgg
ma cosa ti aspetti da una Italia che ha un 'Ministero per il Welfare',
e che al Parlamento c'è regolarmente il 'Question time'  ????
Belin, se non danno l'esempio i nostri governanti, cosa si puo'
pretendere ??
D'altro canto, fatti i dovuti paralleli, preferisco nonostante tutto la
'moda' odierna che quella degli anni 30, dove si italianizzava tutto.
In Germania sono andati oltre : avevano 'tedeschizzato' pure la parola
'telefono' e 'televisione', (che sono di origine greca) e sono state
sostituite da 'Fernsprecher' e 'Fernseher'.
Per non parlare dell'automobile, che invece di chiamarla 'auto' ancora oggi
si chiama Pkw = Personenkraftwagen... :-)))
eil 'camion' si chiama 'LKW' = Lastkraftwagen.
E queste parole sono ancora in uso.
Allora io preferisco la moda di oggi... :-))))
John.
 

giorgio wrote:

Grassie Giorgio !   Sono rientrato adesso e vado subito a provare.
Speriamo che dopo una settimana di rotture stasera posso continuare col mio
lavoro.
Mi sa che dovrò esperimentare un po', perchè la faccenda dei 'delimiters'
l'avevo provata ma no aveva funzionato bene.
Non capisco perchè dover delimitare una variabile alfabetica con +XXXX+ e
poi anche racchiuderla in "  "  o '  '.
Bahh. misteri del SQL.
Comunque adesso vado a provare.
Grazie mille.
John.

 Bahh. misteri del SQL.
?
+XXX+ concatena la 'prestringa' vb con la 'poststringa'.
Gli apici fanno parte della stringa totale, e sono uno nella 'pre' e uno 
nella 'post'.
Che brutta spiegazione....

 schrieb im Newsbeitrag
news:3qte32F...@individual.net...

Ho capito adesso ! Tu (e anche Bertolazzi in un altro post) usate il segno +
e invece io uso il segno & (ampersand) per 'concatenare' strings.  :-)))
oua  go capìo.... :-))))

 oua  go capìo.... :-))))
In teoria sarebbe meglio l'&, perche' nei linguaggi 'seri' (alcuni, 
almeno) usare il + o il simbolo di concatenazione puo' forzare il tipo 
di dato.
es (php):
$a=1;
$b="2";
$c=$b.$a; // $c diventa "21" stringa
$c=$a+$b; // $c diventa 3

 oua  go capìo.... :-))))
In teoria sarebbe meglio l'&, perche' nei linguaggi 'seri' (alcuni,
almeno) usare il + o il simbolo di concatenazione puo' forzare il tipo
di dato.
es (php):
$a=1;
$b="2";
$c=$b.$a; // $c diventa "21" stringa
$c=$a+$b; // $c diventa 3
In pratica, in vb, e' lo stesso...
(occhio pero' che se non dichiari le variabili a inizio routine con Dim 
a as string, vengono tutte inizializzate a Variant, con risultati a 
volte imprevedibili!)

 volte imprevedibili!)
Non conosco il php. Ma come dici tu, ci sto anch'io molto attento.
 <heheheheh>  :-)))))
Ciao.
John.

volte imprevedibili!)
Il risultato certo è cha va tutto molto ma molto più piano.
-- 
Nulla è impossibile per chi non lo deve fare.