Il blog di Emilio Scaccaglia

Dedicato al VB ed al VBA
posts - 165, comments - 3058, trackbacks - 1

giugno 2011 Blog Posts

Access - uso delle API di Windows con VBA

Esistono casi in cui lo sviluppo di un'applicazione Access richiede l'utilizzo di routine o funzioni API (Application Programming Interface). Questo accade, per lo più, quando l'applicazione deve accedere a funzionalità di sistema, che sono sotto il controllo del S.O. (Windows). Il sistema operativo e tutte le applicazioni che vi girano sotto, sono costruiti con blocchi di codice chiamati DLL (Dynamic Link Library). Molte DLL hanno la necessità di utilizzare funzionalità dell'interfaccia di Windows, che sono spesso le stesse. Le DLL quando necessitano di accedere al S.O. usano appunto le API di Windows. I problemi per il programmatore sono essenzialmente del tipo sotto...

posted @ martedì 28 giugno 2011 09:57 | Feedback (46) |

Info - psichiatria e Clienti

Ritengo che il miglior software developer sia il laureato in Psichiatria o almeno in Psicologia, pechè? 1) Un grosso (importante, non obeso) Cliente vuole che una query visualizzi tutti i dati relativi alle forniture di carburanti effettuate nel corso della'anno. Record totali: > 250000. Cavolo, il software è lento! Rispondo: "Cavolo, con una rete trafficata e più di 250000 record da visualizzare, va bene se dopo un attesa di circa 10' si visualizza qualche cosa!" 2) Polizia Municipale, la query deve visualizzare tutte le contravvenzioni effettuate in un periodo di 5 anni. Ovviamente con una rete distribuita LAN/WAN i dati arrivano un...

posted @ giovedì 23 giugno 2011 13:26 | Feedback (30) |

Access - gestione errori di record-locking (parte 1)

Anche se si impostano le Opzioni prededefinite di Access (2007) con un valore che sembra corretto per gestire i problemi di record-locking del proprio progetto, probabilmente con un numero elevato di utenti si verificheranno comunque conflitti di varia natura. Più utenti usano l’applicazione, più probabile che si creino conflitti. Tali conflitti possono comunque essere gestiti (catturati) tramite codice VBA e comunicati agli utenti. Microsoft con Access 2007 e successivi, ha sviluppato un modo per memorizzare dati nella cache, scrivendoli sul disco solo quando la cache è piena. Questo rende Access più veloce ma rende più difficile l’intercettazione degli errori. Un altro  problema con...

posted @ mercoledì 22 giugno 2011 19:45 | Feedback (32) |

Access - report con colonne affiancate

Se non si ha bisogno dell'intera larghezza della pagina, potrebbe essere utile lavorare con report a colonne affiancate. Questo permette al lettore di avere in una stessa pagina più dati da confrontare. Anche la riduzione delle pagine stampate potrebbe essere significativa. Anche l'estetica risulta avvantaggiata da questa soluzione di stampa. Per avere più colonne per pagina in un report,  non è necessario ricorrere al codice VBA, basterà accedere alla finestra "Imposta Pagina" del gruppo "Layout" ed accedere alla s cheda " Colonne". Appena si cambia il numero delle colonne, si attiva la sezione "Layout Colonne" . L'opzione predefinita è "Priorità Orizzontale" che fa...

posted @ mercoledì 22 giugno 2011 09:50 | Feedback (36) |

Access - automazione (Word)

Creare un istanza di un oggetto WORD Il primo passo nell'uso dell'automazione è creare un'istanza di un oggetto. Il codice seguente crea un'istanza di un oggetto: Dim objWord as Word.Application Set objWord = CreateObject("Word.Application") Si può omettere la funzione CreateObject usando il seguente codice: Dim objWord As New Word.Application non è necessario usare l'enunciato Set per attivare l'istanza di Word. Per attivare l'automazionesi deve dichiarare una variabile oggetto che faccia riferimento all'oggetto Application col quale si voglia interagire. Riferimenti: le librerie di tipi per le applicazioni Office sono identificate da un numero di versione che è 11.0 per Office 2003 e 12.0 per Office 2007. Ne va che...

posted @ giovedì 16 giugno 2011 11:07 | Feedback (52) |

Access - la proprietà Tag

La proprietà Tag ha la caratteristica di non fare assolutamente nulla. E' possibile usarla come luogo dove immagazzinare informazioni per poi usdarle in un secondo momento. Esempio: si supponga di volere che il proprio software, creato con Access, debba riempire ogni nuovo record con i dati del precedente. Usando la prorpietà Tag, è possibile memorizzare in essa i valori del record corrente. Quando ci si sposta sul nuovo record, la proprietà Tag ci permetterà di ricavare da essa i dati necessari al nuovo riempimento.

posted @ giovedì 16 giugno 2011 10:48 | Feedback (19) |

Access - aggiungere informazioni ai report

La seguente espressione è nota a tutti gli utilizzatori di Access: ="Pagina " & [Pagina] & " di " & [Pagine] Le parole tra parentesi quadre sono proprietà del report e forniscono informazioni disponibili solo a runtime. Le proprietà di un report come per esempio Pagina o Pagine funzionano solo a runtime. Per la visualizzazione basterà aggiungerle ad una casella di testo  non associata. Molte di queste proprietà sono utili solamente allo sviluppatore, ma, alcune possono risultare di una qualche utilità anche per l'utilizzatore finale. Name - stampa il nome originale del report RecordSource - stampa il nome dell'origine dati Now - stampa la data e l'ora...

posted @ giovedì 16 giugno 2011 08:59 | Feedback (15) |

Access - opzioni della riga di comando

Quando si seleziona Access 2007 dal menù Start di Windows, viene eseguito il file di programma MSAccess.exe. Creando in link sul Desktop di Windows ed inserendo nella riga di comando oltre al nome del file di programma di Access anche l'opzione /runtime (MSAccess.exe /runtime), Access si apre senza visualizzare alcun strumento di interfaccia, con il solo pulsante di Office che contiene il solo comando Chiudi database. L'opzione può essere inserita lanciando il programma dalla finestra Esegui oppure creando in lonk al database sul desktop. Seguono le opzioni della riga di comando, valide per Access 2007, ricavate dalla guida di access sotto la...

posted @ mercoledì 15 giugno 2011 14:01 | Feedback (14) |

Access & ActiveX - i controlli

I controlli ActiveX sono una famiglia di oggetti software dotati di molteplici funzionalità (metodi e proprietà) utilizzabili in molti contesti di programmazione senza dover riscrivere il loro codice. Sono pacchetti autosufficenti di istruzioni e di dati. Fisicamente gli ActiveX sono file normalmente inseriti nelle cartelle System e System32 di Windows e si identificano per una delle seguenti estensioni: OCX, DLL, VBX e altri ancora. Quando si installa un applicativo in Windows, quasi sempre il processo di installazione comporta la copia di file ActiveX nella cartella di Windows predefinita per ospitarli. Il loro uso, ActiveX, è subordinato a due condizioni, la prima è...

posted @ martedì 14 giugno 2011 19:53 | Feedback (29) |

Access & SQL - query da programma

segue il mio post: le funzioni di aggregazione sui domini ... Query da programma Le funzioni di aggregazione sui domini sono espressioni predefinite in linguaggio SQL. Con queste espressioni è possibile eseguire query di selezione e di calcolo. Quando si creano query utilizzando la griglia di struttura grafica, Access costruisce un enunciato SQL, che è quello che viene lanciato per generare i risultati richiesti. E' possibile creare una quesry direttamente in linguaggio SQL senza passare dalla griglia grafica. La query potrà poi essere lancata usando i comandi RunSQL dell'oggetto DoCmd oppure per mezzo di una macro con l'azione EseguiSQL. Queste due tecniche però,...

posted @ martedì 14 giugno 2011 19:33 | Feedback (45) |

Access - le funzioni di aggregazione sui domini

Si chiama dominio, nella terminologia dei database, l'insieme dei valori validi per un determinato attributo. Un attributo è semplicemente un campo di un record. Per cui il dominio di un attributo chiamato Nome, potrebbe essere l'insieme di tutti i nomi presenti in una determinata tabella. Le funzioni di aggregazione sui domini restituiscono informazioni su uno specifico dominio. Il concetto di aggregazione insito nel loro nome sta a significare che tali funzioni svolgono il loro lavoro mettendo insieme tutto quello che trovano in un determinato dominio. DAvg - media dei valori di un campo DCount - conteggio dei record (il loro numero) DLookup - ricerca...

posted @ martedì 14 giugno 2011 08:20 | Feedback (25) |

Access - -proprietà dell'applicazione

Le opzioni che si possono impostare nelle pagine della finestra Opzioni di Access, selezionando un valore spuntando una casella di controllo o selezionando una voce in una casella combinata, corrispondono a proprietà dell'oggetto Application. L'elenco completo, molto lungo, di queste proprietà (Opzioni), si può reperire al seguente indirizzo: http://msdn2.microsoft.com/en-us/library/aa168263(office.10).aspx che vi porterà inuna pagina dal titolo Properties Reference Lo schema sintattico per impostare una di queste opzioni è il seguente: Application.SetOption(NomeOpzione, Impostazione) doce Application è un riferimento al database correntemente aperto e NomeOpzione è il nome Inglese della proprietà che si vuole cambiare o conoscere. Impostazione può assumere due valori, Vero/Falso, oppure un semplice valore stringa....

posted @ sabato 11 giugno 2011 09:56 | Feedback (48) |

Access - la funzione SysCmd

Presente in tutte le versioni di Access, la funzione SysCmd consente di eseguire comandi che hanno a che fare col sistema. Il sistema è Access nel suo complesso. Aggiungendo alcuni argomenti alla funzione SysCmd è possibile effettuare le seguenti operazioni: Accedere ad informazioni su Access e sui suoi file conoscere lo stato del database, se è aperto o chiuso, modificato o salvato ... visualizzare nella barra di stato, scritte o la...

posted @ giovedì 9 giugno 2011 21:22 | Feedback (63) |

Access - collegare tabelle via codice (Excel)

Collegare tabelle esterne ad Access usando codice VBA. Ci sono casi in cui si ha bisogno di collegare dati esterni "al volo", magari ogni volta che si avvia l'applicazione. In questo esempio userò DAO al posto di ADO in quanto molto più veloce per questo tipo di operazione. Il motivo per cui DAO  è più veloce di ADO in operazioni semplici come per esempio collegare dati esterni, risiede nel fatto che DAO non ha bisogno di tutte le aggiunte portate dalla dichiarazione, istanziazione e chiusura dei controllo ActiveX. Dato che DAO è un modello di oggetti più semplice di ADO, risulta...

posted @ martedì 7 giugno 2011 11:39 | Feedback (34) |

Access - collegamento a dati esterni

Il collegamento ai dati esterni, per gli utilizzatori di MS Access è fondamentale. Microsoft Access ha gli strumenti per trattare molti tipi di dati esterni. Vecchi database, HTML e XML sono i dati che più spesso richiedono un collegamento esterno da parte di Access. Immaginiamo, per esempio, di avere un'applicazione che si collega a un database esterno quale potrebe essere SQL Server, e che la rete si blocchi. Se un utente, che ignora il problema della rete, tenta di collegarsi e di aprire la fonte dati, si verifica un errore che lo mette sicuramente in difficoltà. Potrebbe anche capitare che un...

posted @ giovedì 2 giugno 2011 13:36 | Feedback (45) |

Access - generazione dei report a due passate

Access utilizza un approccio a due passate quando formatta e stampa i report. Il principale vantaggio di questo approccio è che si possono inserire nei report espressioni che si basano su informazioni presenti in qualsiasi punto del report stesso. Esempio: se si inserisce un controllo con la funzione Somma() nell'intestazione o nel piè di pagina del report, nella prima passata Access recupererà i dati necessari per la funzione e nella seconda calcolerà l'intestazione o il piè di pagina per poi, andare in stampa. Esempio: uso di una casella di testo non associata nel piè di pagina di un report con una espressione del...

posted @ mercoledì 1 giugno 2011 20:29 | Feedback (33) |

Powered by:
Powered By Subtext Powered By ASP.NET