Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI presenta Mic Mini 2, un sistema microfonico wireless ultra-compatto progettato per democratizzare l'audio di alta qualità nella fascia entry-level. Con un peso di soli 11 grammi per il trasmettitore elimina i fastidi tipici dei modelli più pesanti sui vestiti. Nonostante la miniaturizzazione Mic Mini 2 offre prestazioni tecniche di rilievo: registrazione omnidirezionale a 48 kHz/24-bit, tre preset vocali (Regular, Bright, Rich) e un sistema di cancellazione attiva del rumore a due livelli.
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Motorola propone in fascia media il nuovo Moto G77 5G, uno smartphone che punta sul display AMOLED da 1.5K a 120Hz, e sulla fotocamera da 108 MP con stabilizzazione ottica per affrontare la fascia media. Il tutto insieme a una batteria da 5200mAh in soli 7,3 millimetri di spessore, con una scocca certificata con standard militari
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-05-2009, 17:18   #1
tomino87
Member
 
Iscritto dal: Aug 2008
Messaggi: 56
[VBA] Aiuto per esecuzione query

Ho un progetto adp su access 2003, che si collega as un database su SQL server 2005 e volevo fare una piccola prova con una query INSERT su una tabella di prova.
Ho creato un piccolo form, che consta di un solo bottone, al quale è associata la seguente sub per l'evento click:

Codice:
Private Sub Comando0_Click()
    Dim db As DAO.Database
    Dim sql As String
    
    Set db = CurrentDb
    sql = "INSERT INTO prova_insert (date,id) VALUES ('19/05/2009',2)"
    db.Execute sql
    Set db = Nothing
End Sub
Quando testo il form, cliccando il bottone, mi viene mostrato il messaggio di errore:

"Errore di run-time '91': Variabile oggetto o variabile del blocco With non impostata"

Ora... guardando un pò in giro per il/i forums ho capito che ciò succede quando si cerca di assegnare un valore o utilizzare una variabile che non ha una buona referenza... in particolare a me l'errore me lo da all' istruzione "execute": però io ho dichiarato db e ho anche settato db = CurrentDb... quindi perchè mi viene mostrato sto picchio di errore???

Grazie in anticipo per chiunque voglia aiutarmi...

Piero

Ultima modifica di tomino87 : 19-05-2009 alle 17:58.
tomino87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2009, 07:54   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da tomino87 Guarda i messaggi
Codice:
Private Sub Comando0_Click()
    Dim db As DAO.Database
    Dim sql As String
    
    Set db = CurrentDb
    sql = "INSERT INTO prova_insert (date,id) VALUES ('19/05/2009',2)"
    db.Execute sql
    Set db = Nothing
End Sub
C'è decisamente troppo codice per quello che devi fare.
Nel tuo caso specifico non so perchè dia errore, ma puoi risolvere drasticamente con :

1. Se vuoi concatenare :
Codice:
DoCmd.RunSql "INSERT INTO prova_insert ( date, id ) VALUES ( #19/05/2009#, 2 )"
> Meglio usare i caratterri sharp " # " per delimitare le date, in quanto gli apici possono dare problemi...

2. Se, meglio ancora, vuoi usare i parametri, vedi mio esempio qui :
http://www.hwupgrade.it/forum/showthread.php?t=1977950

MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2009, 09:14   #3
tomino87
Member
 
Iscritto dal: Aug 2008
Messaggi: 56
Innanzitutto grazie per la risposta

Riguardo agli sharp # per i valori.... non vanno bene per SQL Server...
Access nelle query accetta i valori delimitati da #, ma SQL Server non li accetta... e l'unico modo per inserire/far confronti/lavorare con le date nelle query in SQL Server è con gli apici singoli....

Riguardo al codice che mi hai scritto, funziona

Solo una curiosità: siccome non sono esperto di vba.... perchè quella che mi hai detto sarebbe una soluzione "drastica"?
tomino87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2009, 10:45   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da tomino87 Guarda i messaggi
Innanzitutto grazie per la risposta
Riguardo agli sharp # per i valori.... non vanno bene per SQL Server...
Access nelle query accetta i valori delimitati da #, ma SQL Server non li accetta... e l'unico modo per inserire/far confronti/lavorare con le date nelle query in SQL Server è con gli apici singoli....
Sì, mi ero perso la prima parte in cui parlavi di Sql Server...
Ma quel "CurrentDb" funziona con Sql Server, poi ?
Cioè, non mi era chiaro se quel codice VBA esegue una Insert in Access o in Sql Server... o in tutti e due...

Quote:
Originariamente inviato da tomino87 Guarda i messaggi
Riguardo al codice che mi hai scritto, funziona

Solo una curiosità: siccome non sono esperto di vba.... perchè quella che mi hai detto sarebbe una soluzione "drastica"?
"Drastica" nel senso che gli errori 91 < Variabile oggetto o variabile del blocco With non impostata > sono spesso dovuti all'utilizzo di librerie non referenziate, o all'uso di oggetti a nothing, ossia prima che siano stati inizializzati. Non ho provato il tuo codice, perchè appena ho visto che tentavi di fare una semplice Insert, ho suggerito DoCmd, che appunto è la strada più diretta in assoluto ( ma che può riservare brutte sorprese, a differenza della tecnica con parametri, più lunga, ma più sicura... ), se parliamo di Access-VBA.
Quindi DoCmd è una delle funzioni VBA di base, non necessita riferimenti ad ADODB, DAO o altre librerie, e perciò virtualmente immune agli errori 91.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2009, 15:44   #5
tomino87
Member
 
Iscritto dal: Aug 2008
Messaggi: 56
Ahh ora è tutto chiaro... cmq l'insert era su sql server: in realtà tutte le operazioni vengono fatte su sql server... questa era semplicemente una prova per trovare del codice che funzionasse per eseguire query di comando sul database su sql server che sarà collegato al mio progetto adp.
Il progetto è un progetto mooolto serio... per questo forse la strada del DoCmd non è molto appropriata (in quanto mi hai detto che può riservare sorprese...)

Ho fatto per conto mio un paio di "prove"... e pensavo di utilizzare codice di questo tipo (visto che praticamente tutto il progetto su cui sto lavorando utilizza la libreria ADODB):

Codice:
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Connection = CurrentProject.Connection

Dim sqlstr As String
sqlstr = "Stringa sql da inviare al server"

rst.Open sqlstr, CurrentProject.Connection
(naturalmente con un opportuno "On Error GoTo ..." prima del "rst.Open ...", in modo da captare possibili errori sull' esecuzione della query)

Secondo te può essere meglio agire così? Oppure sono solo dei problemi mentali che mi sto facendo?
tomino87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2009, 20:39   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da tomino87 Guarda i messaggi
Il progetto è un progetto mooolto serio... per questo forse la strada del DoCmd non è molto appropriata (in quanto mi hai detto che può riservare sorprese...)
No, infatti. DoCmd può essere un'ottima scorciatoia, a patto che si sappia esattamente come gestire la concatenazione tra istruzioni Sql e valori, e comunque ti espone a problemi. Piccolo esempio classico :

Codice:
    Dim stringa As String
    stringa = "questa non crea problemi"
    DoCmd.RunSQL "INSERT INTO nomeTabella (id, campoStringa) VALUES (100, " & "'" & stringa & "'" & ")"
Codice:
    Dim stringa As String
    stringa = "Questa crea un po' di problemi"
    DoCmd.RunSQL "INSERT INTO nomeTabella (id, campoStringa) VALUES (100, " & "'" & stringa & "'" & ")"
mentre al link che ti ho dato trovi proprio un esempio di come usare gli ADODB Parameters...

Quote:
Originariamente inviato da tomino87 Guarda i messaggi
Ho fatto per conto mio un paio di "prove"... e pensavo di utilizzare codice di questo tipo (visto che praticamente tutto il progetto su cui sto lavorando utilizza la libreria ADODB):

Codice:
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Connection = CurrentProject.Connection

Dim sqlstr As String
sqlstr = "Stringa sql da inviare al server"

rst.Open sqlstr, CurrentProject.Connection
(naturalmente con un opportuno "On Error GoTo ..." prima del "rst.Open ...", in modo da captare possibili errori sull' esecuzione della query)

Secondo te può essere meglio agire così? Oppure sono solo dei problemi mentali che mi sto facendo?
Su questo non mi posso pronunciare al momento, dato che non ho mai sperimentato una cosa simile, ossia un progetto Access che tramite VBA faccia operazioni su Sql Server, ( ho invece spesso usato Excel VBA, VB6 o VB.NET... ) perciò mi suona molto strano che con quella CurrentProject.Connection tu riesca a combinare qualcosa... Il mio consiglio è di usare le tecniche standard ADODB ( che sono le medesime che useresti da un'applicazione VB6 ), senza "mischiarle" con tecniche tipicamente Access, come CurrentProject / CurrentDB / DoCmd ecc...
In ogni caso prova... E fammi sapere.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2009, 08:19   #7
tomino87
Member
 
Iscritto dal: Aug 2008
Messaggi: 56
Dunque... ho letto il post che mi hai indicato. E' un procedimento molto interessante. Però ho un'osservazione da fare: tu mi hai detto di non usare CurrentProject.Connection, visto che mi collego ad sql server...

In realtà non mi sembra un'eresia indicare come connessione la CurrentConnection anche nel mio caso, in quanto sto lavorando con un adp che è collegato al database sul server sql... ovvero, nelle proprietà del progetto, la fonte dati è un database su uno specifico server sql: pertanto logicamente la CurrentProject.Connection dovrebbe restituire la connessione al detto server sql. Correggimi se sbaglio (o eventualmente esprimimi meglio il tuo dubbio )...

p.s.: la soluzione con CurrentProject.Connection che ho indicato l'ho testata e funziona...
tomino87 è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2009, 08:38   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da tomino87 Guarda i messaggi
Dunque... ho letto il post che mi hai indicato. E' un procedimento molto interessante. Però ho un'osservazione da fare: tu mi hai detto di non usare CurrentProject.Connection, visto che mi collego ad sql server...

In realtà non mi sembra un'eresia indicare come connessione la CurrentConnection anche nel mio caso, in quanto sto lavorando con un adp che è collegato al database sul server sql... ovvero, nelle proprietà del progetto, la fonte dati è un database su uno specifico server sql: pertanto logicamente la CurrentProject.Connection dovrebbe restituire la connessione al detto server sql. Correggimi se sbaglio (o eventualmente esprimimi meglio il tuo dubbio )...

p.s.: la soluzione con CurrentProject.Connection che ho indicato l'ho testata e funziona...
Io ti ho suggerito di non mischiare, preferibilmente, il VBA tipico di Access ( fatto di comandi-scorciatoia che non non trovi ad esempio in Excel-VBA o VB6 ) con le tecniche ADODB, che invece puoi usare indifferentemente da qualsiasi implementazione Office di VBA o da VB6, per un mero discorso di omogeneità. Era un consiglio di ciò che farei io, tutto qui. Se poi in futuro dovessi riutilizzare quel codice da Excel-VBA, o da VB6 o da altri applicativi che fanno uso di VBA ( Corel ecc... ) ti troveresti spiazzato, perchè non avresti più a disposizione i vari DoCmd, CurrentDb ecc...

Non avendo una gran esperienza con i progetti ADP di Access ( per il semplice motivo che, per scelta personale, evito accuratamente di creare applicativi 100%-Access ) ti avevo messo in guardia dall'usare CurrentProject.Connection, ma se dici che è tutto ok, per me va bene.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2009, 13:44   #9
tomino87
Member
 
Iscritto dal: Aug 2008
Messaggi: 56
Mi trovi del tutto daccordo sul non utilizzare soluzioni al 100% access... a dir la verità io non lo farei nemmeno all' 1%

Il punto è che il progetto su cui lavoro non è una cosa che faccio io da capo: si tratta di un upsizing di un db molto grosso con un sistema informativo (come avrai capito in vba..) da access a sql...
Quindi devo modificare tutto il codice vba (che precedentemente era pensato per funzionare con access) in modo che si interfacci correttamente col db, che d'ora in poi starà su sql server...
Naturalmente non è che posso buttare via tutto Devo quindi tenermi questa scelta iniziale (che non ho fatto io) di utilizzare in grossa parte l'ambiente access.... questo il motivo per cui ho creato l'adp, che a detta di tutti (anche della stessa microsoft) è la soluzione migliore per i progetti access che utilizzano come fonte di dati non access stesso, bensì sql server
tomino87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro DJI Mic Mini 2: audio 48 kHz / 24-bit e protocol...
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico Recensione Moto G77: display AMOLED e buona auto...
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
La propulsione ottica con metajet potreb...
La missione Artemis III potrebbe essere ...
Mad Catz M.M.O. 7+: il mouse MMO da cult...
SAS porta il calcolo quantistico nelle a...
Un miliardo di dollari da SAS per portar...
SAS si apre all'IA di terzi: Viya integr...
Quantinuum si appresta a debuttare in Bo...
Censis: il 60% degli italiani evita i me...
Cloud sovrano: Microsoft potenzia Azure ...
Spionaggio industriale: l'edge è ...
Cosa cambia davvero su un'auto elettrica...
Agenti AI più costosi dei dipende...
GeForce RTX 5070 Laptop da 12 GB al debu...
Le aziende e i prodotti candidati all'EH...
Il materiale che cambia tutto: funziona ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v