Il blog di Emilio Scaccaglia

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

marzo 2011 Blog Posts

Access, non si può usare QBE

QBE (Query by Examples) è utilissimo per creare query SQL (Structured Query Language) anche di una certa difficoltà senza, naturalmente, scrivere una sola parola in SQL. Però ci sono alcune query che non spossono essere scritte con QBE. Riportiamo quali sono: Query di unione; combinano in un solo recordset più tabelle o query Query Pass-Through; invia comandi SQL direttamente a un database ODBC (Open database Connectivity) Query di definizione dati; crea e modifica direttamente tabelle

posted @ lunedì 28 marzo 2011 21:03 | Feedback (16) |

La maschera o il report, sono aperti?

A volte sapere se una determinata maschera in A ccess è aperta, oppure, un dato report è caricato, può essere molto utile. Scoprirlo è facilissimo. Ecco due funzioni che rispondono a queste domande. 'determina se una maschera è aperta Public Function FormOpen(NomeForm As String) As Boolean Dim i As Integer FormOpen = False For i = 0 To Forms.Count - 1     If Forms(i).Name = NomeForm Then         FormOpen = True         Exit Function     End If Next End Function 'determina se un report è aperto Public Function ReportOpen(NomeReport As String) As Boolean Dim i As Integer ReportOpen = False For i = 0 To Reports.Count - 1     If Reports(i).Name = NomeReport Then         ReportOpen = True        ...

posted @ lunedì 28 marzo 2011 20:54 | Feedback (10) |

L'Ipotesi Diagnostica - il software aiuta il medico

IPOTESI DIAGNOSTICA Parte 1 di 2 L’ANAMNESI E L’ESAME OBIETTIVO Una diagnosi corretta si basa sulle modalità di presentazione dei sintomi, su un esame clinico accurato e su un uso razionale degli esami di laboratorio. Tuttavia, proprio nel tempo attuale, tali princìpi sono quasi del tutto trascurati nell’esercizio della professione medica sia negli ospedali che nel territorio. Il Medico, infine, sente una specie di inferiorità e dipendenza nei confronti delle sempre più sofisticate tecniche di indagine diagnostica. D’altra parte i Pazienti sono stati abituati a chiedere con insistenza indagini laboratoristiche e strumentali di ogni tipo: il più delle volte tali indagini sono inutili e spesso dannose. Questo...

posted @ lunedì 28 marzo 2011 20:06 | Feedback (37) |

Algebra di Bool, poco o tanta ... ci vuole!

Un po’ di matematica (di Boole)

posted @ domenica 27 marzo 2011 20:12 | Feedback (18) |

Critiche al linguaggio SQL

SQL è un linguaggio per interrogazioni verso i database relazionali. I teorici pensano che le caratteristiche originali di SQL, ispirate al calcolo delle tuple “generico elemento di una relazione”, in realtà lo violino. Le sue estensioni più recenti supportano in pieno il Modello Relazionale, ma hanno peggiorato le suddette violazioni. Inoltre, ci sono molte critiche sull’utilizzo di SQL in generale: 1.       il linguaggio è troppo complesso; 2.       esistono più implementazioni di SQl, generalmente incompatibili fra loro; 3.       i valori NULL “metavalore che indica assenza di un valore”, sono troppo usati e...

posted @ domenica 27 marzo 2011 20:06 | Feedback (10) |

Cosa è SQL? Qualcuno ancora lo chiede!

La sigla SQL sta per “Structured Query Language”, che significa in italiano, (linguaggio per interrogazioni strutturate). Il linguaggio identifica uno strumento di accesso alle informazioni presente nei database relazionali molto ricco e versatile. Nel 1974, in un articolo pubblicato dai laboratori IBM per la prima volta si parlava di un linguaggio denominato “Structured English Query Language”, in sigla SEQUEL. Il linguaggio, secondo quanto scritto nell’articolo, si proponeva come il mezzo con cui, ignorando ogni complicazione della memorizzazione dei dati,  si sarebbe potuto interrogare un database ed ottenere utili risultati. La prima implementazione del linguaggio, in pratica vide...

posted @ domenica 27 marzo 2011 13:50 | Feedback (11) |

Disponibile "L'Ipotesi Diagnostica nel Metodo Clinico"

Avete presente il Super Computer "Watson" creato dall'IBM per competere ad un gioco televisivo negli USA? Hanno poi scoperto che tale tecnologia si adattava anche a scopi più utili che non l'intrattenimento TV. La grande IBM ha sviluppato un computer denominato "WATSON" che sembra in grado di manifestare un qualche segno di intelligenza e, dopo averlo mostrato in uu quiz televisivo USA, hanno pensato di implementare tramite la software house Nuance, un sisgtema per la diagnosi delle malattie sviluppate dagli esseri umani. Il Dott. Ing. Giorgio Fiore di Parma, Italia, già più di diace anni fa aveva sviluppato un software che aveva ed ha...

posted @ domenica 27 marzo 2011 11:11 | Feedback (11) |

Access: Macro o VBA?

Il fatto che VBA abbia preso piede in questi anni a scapito delle macro è un fatto assodato. Comunque, nella creazione guidata di Access, spesso le macro vengono inserite automaticamente dallo stesso software. questo potrebbe significare che Microsoft non vuole del tutto abbandonare le macro a favore di VBA ma, solo favorire quest'ultima tecnologia rispetto al vecchio modo di automatizzare Access, ovvero usando le macro. In Access le macro sono utili per aprire maschere e report, operazioni semplici direi, ma, ci sono operazioni che possono essere effettuate solo con VBA, quali ad esempio: creare funzioni persolalizzate, intercettare e gestire gli errori,...

posted @ domenica 27 marzo 2011 10:21 | Feedback (36) |

Nascondere e visualizzare le maschere in Access

Può essere utile nascondere, aagari solo momentaneamente una o più maschere durante la visualizzazione di un anteprima di stampa (Report), per evitare sovrapposizioni. Qundo il report viene chiuso, si visualizzano nuovammente le maschere. Function ShowReport(ReportName as string) Dim intErrCode as integer DoCmd. OpenReport ReportName, acPreview intErrCode = MakeFormsVisible(0) End Function Function MakeFormsVisible(Yes No) as Boolean Dim intConta as Integer On Error GoTo Hell For intConta = 0 To Forms.Count - 1 Forms(intConta).Visible = YesNo Next MakeFormsVisible = True Exit Funcion Hell: MsgBox Err.Description Err.Clear For intConta = 0 to Forms.Count - 1 Forms(intConta).Visible = -1 Next Resume Hell End Function Naturalmente al codice bisognerà aggiungere una qualche forma di gestione degli errori. Comunque il codice è tutto quì. Se chiamo la Function con...

posted @ domenica 27 marzo 2011 09:38 | Feedback (19) |

Access - salvare i dati

La subroutine che segue, permette di salvare da codice VBA il file di Access con cui si sta lavorando, oppure uno o più file anche esterni al file contenente il codice. Naturalmente la routine piuò essere usata per effettuare dei salvataggi di sicurezza, anche programmandoli temporalmente, ma, non conprime i file come farebbe un vero programma di backup. Se la cartella di destinazione non dovesse esistere al momento del lancio della routine, la routine stessa provvederà alla sua creazione. I due prarametri sono: <Percorso> che consente di passare alla Sub il percorso dove archiviare la copia del file; <NomeDb> non è altro...

posted @ giovedì 24 marzo 2011 13:14 | Feedback (18) |

Mostrare i report in una casella combinata

Se si vuole ottener una lista dei report presenti in un determinato DB, bisogna rivolgersi alla tabella di sistema denominata MSysObjects, naturalmente in MS Access. Per farlo basterà selezionare "Tabella/Query" come valore della proprietà RowSource Type della casella combinata e inserire il seguente codice SQL nella proprietà RowSource. SELECT DISTINCTROW [name] FROM MSysObjects WHERE [Type] = -32764 ORDER BY [Name]; Se i nomi dei report sono stati pensati usando una qualche convenzione, come per esempio avere un prefisso di 3 lettere, la query potrebbe essere modificate per visualizzare solo un determinato tipo di report. Esempio: se cerco tutti i report che hanno come prefisso...

posted @ giovedì 24 marzo 2011 13:08 | Feedback (16) |

Lavorare ancora con i DAO

Molti mi chiedono perchè io insista a lavorare ancora con DAO (Data Access Objects) che, è vero, sono stati la struttura portante di tutte le versioni di Access fino alla 97, ma adesso sono egregiamente sostituiti da ADO (ActiveX Data Objects). La risposta è semplice; dato che mi risulta, come del resto Microsoft sembra confermare, che i DAO siano adatti alla creazione di tabelle ed alla loro modifica più e meglio degli ADO, allora perchè non usarli, magari anche solo perchè il codice scritto usando DAO è più veloce? Esiste una forte correlazione fra DAO e Visual basic for Application e forse...

posted @ giovedì 24 marzo 2011 11:02 | Feedback (19) |

Access - l'evento Error

Quando si usano Maschere e/o Report, Microsoft Access fornisce un evento che offre un modo per catturare gli errori che si verificano nel motore del database. Si deve creare una procedura per fare in modo che l'evento Error catturi gli errori. Per le maschere, la procedura sarà la seguente: Sub Form_Error(DataErr as Integer, Respoonse as Integer) End Sub Mentre se si vuole implementare la gestione degli errori per un Report: Sub Report_Error(DataErr as Integer, Respoonse as Integer) End Sub DataErr non è altro che il codice di errore restituito dal motore del database di Access. L'oggetto Err non serve quando si usa...

posted @ giovedì 24 marzo 2011 10:43 | Feedback (66) |

Ancora un libro che tratta di Access e VBA

Finalmente ho trovato un testo che tratta di VBA (Visual Basic for Applications) in modo, seppur non esauriente, ma almeno intelligente. Fino ad ora, ho acquistato molti testi che trattano di Access o database in generale, ma purtroppo nessun testo ha esaurito l'argomento o gl argomenti trattati. Perchè? Semplice, il campo di studio era e rimane troppo vasto. "Access 2007 - Programmazione e Tecniche Avanzate" è un testo che dichiara esplicitamente di essere adatto a chi voglia imparare le basi di VBA. Perfetto, almeno questa volta il titolo identifica alla perfezione il tipo di utente che dovrebbe acquistare il testo....

posted @ giovedì 24 marzo 2011 09:00 | Feedback (11) |

Un programma scritto un VB6, da buttare?

Mi sono chiesto se un programma creato circa 12 anni fa sia completamente da buttare. Fatturazione, gestione completa del magazzino, bolle e quanto altro serva alle PMI o alla vendita al dettaglio. Controlla pure i registratori Sarema, trasformandoli in semplici stampanti, dato che lo scontrino viene completamente gestito da software. Ho provato svariati traduttori software da codice VB6 a codice .NET ma nulla da fare, form sballati, report non funzionanti, tutto il codice ADO da riscrivere anche se specifico di voler usare le librerie ADO di VB6, che con .NET per esperienza personale, sò che possono essere usate. Mi chiedo a questo punto...

posted @ domenica 20 marzo 2011 15:19 | Feedback (14) |

SQL quello che i libri non dicono

Non è che voglia fare pubblicità ad un testo, anche perchè non è stato scritto da me. Ma, il libro di Bill Karwin oltre ad essere stato tradotto bene nella lingua italiana, e questo è cosa di non poco conto, ma è anche molto particolare. Approfondisce il linguaggio SQL, partendo non come al solito dalla solita SELECT, ma cerca di arrivare oltre i soliti schemi, insegnando, per quanto questo sia possibile, a realizzare codice SQL non comune, oltre i soliti costrutti. Adatto non agli espertissimi ma a quei programmatori che hanno già delle solide conoscenze di base, il testo offre utilissimi spunti...

posted @ domenica 20 marzo 2011 15:05 | Feedback (14) |

Copiare tabelle collegate

Mi hanno chiesto come si possono copiare tabelle collegate; Esempio: un database Access diviso in due file, uno contenete le tabelle e quindi i dati, l'altro contenente il codice VBA, maschere, query e report. Se possiedo una tabella da cui poter copiare la nuova, il codice SQL necessario sarà il seguente. SELECT NomeTabellaEsistente INTO NomeNuovaTabella IN 'percorso del database destinazione' FROM NomeTabellaEsistente. NomeTabellaEsistente - è il nome della tabella che voglio copiare. NomeNuovaTabella - è il nome della nuova tabella, quella che si vuole creare. Fra singoli apici, scrivo il percorso completo del database di destinazione e il...

posted @ sabato 19 marzo 2011 22:27 | Feedback (28) |

Le vecchie tecnologie che ritornano

Molti mi chiedono perchè io insista a lavorare ancora con DAO (Data Access Objects) che, è vero, sono stati la struttura portante di tutte le versioni di Access fino alla 97, ma adesso sono egregiamente sostituiti da ADO (ActiveX Data Objects). La risposta è semplice; dato che mi risulta, come del resto Microsoft sembra confermare, che i DAO siano adatti alla creazione di tabelle ed alla loro modifica più e meglio degli ADO, allora perchè non usarli, magari anche solo perchè il codice scritto usando DAO è più veloce? Esiste una forte correlazione fra DAO e Visual basic for Application e...

posted @ sabato 19 marzo 2011 19:03 | Feedback (20) |

Powered by:
Powered By Subtext Powered By ASP.NET