Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-12-2012, 23:51   #1
Dottor Gonzo
Senior Member
 
L'Avatar di Dottor Gonzo
 
Iscritto dal: Feb 2008
Messaggi: 1661
Invio automatico email da Access 2010 con Outlook

Buongiorno a tutti.
Nello studio veterinario nel quale lavoro, abbiamo la seguente necessità. Vorremmo inviare delle email in automatico ai nostri clienti quando si avvicina il termine per la vaccinazione annuale del loro animale.

Utilizziamo Access 2010 per la contabilità di cassa e Outlook come gestore di posta elettronica.In sostanza vorremmo che a scadenze regolari (ad esempio una volta al mese) il programma selezioni i nominativi corretti nel database clienti, crei un messaggio personalizzato (con nome cliente, nome animale, data ultimo vaccino, ecc) e lo invii.

Non vi chiedo di indicarmi passo a passo la procedura, anche perchè sono completamente digiuno di Access, programma che non ho mai utilizzato. Vorrei solo sapere se la cosa è fattibile con tali programmi o se consigliate una soluzione diversa. Magari se potete darmi una traccia da cui iniziare.
Mi sembra di aver capito che probabilmente ci vorrà anche un po' di programmazione tramite VBA per l'invio delle email. Vero? Anche qui purtroppo non so nulla.

Grazie.
__________________
" Lascia l'ascia di guerra ed accetta l'accetta dell'amicizia"
Dottor Gonzo è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2012, 22:32   #2
Braccop
Senior Member
 
L'Avatar di Braccop
 
Iscritto dal: Jan 2002
Messaggi: 2690
ti serve un software fatto ad hoc. outlook e' fuori dall'equazione.

ti consiglio di scaricarti visual c# express e farlo con quello, o al limite visual basic express se ti e' + congeniale.

l'idea di base e' che il software debba aprire il database access, fare una query apposita che selezioni i clienti con vaccinazioni in scadenza, e per ogni record invii una mail (tramite un server, ovviamente) generata direttamente nel codice del programma.

tale software poi dovrebb essere schedulato per l'esecuzione (operazioni pianificate di windows) ogni tot giorni
__________________
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders
Braccop è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2012, 23:09   #3
Dottor Gonzo
Senior Member
 
L'Avatar di Dottor Gonzo
 
Iscritto dal: Feb 2008
Messaggi: 1661
Ciao e grazie mille per le informazioni.
Credo di aver afferrato bene l'idea di base. Nei prossimi giorni vedrò cosa riesco a ricavare da visual c# express.
Ho detto di essere abbastanza smanettone ma purtroppo la mia conoscenza dei linguaggi di programmazione è bassissima. Partendo praticamente da zero e leggendo apposite guide, pensi sia fattibile la cosa o mi consigli di lasciar perdere?
__________________
" Lascia l'ascia di guerra ed accetta l'accetta dell'amicizia"
Dottor Gonzo è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2012, 23:47   #4
Braccop
Senior Member
 
L'Avatar di Braccop
 
Iscritto dal: Jan 2002
Messaggi: 2690
se hai dei rudimenti di programmazione e sql probabilmente si, dopotutto non e' difficile come programma
__________________
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders
Braccop è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2012, 18:25   #5
Dottor Gonzo
Senior Member
 
L'Avatar di Dottor Gonzo
 
Iscritto dal: Feb 2008
Messaggi: 1661
In questo giorno ho setacciato la rete e mi sono studiato i principi base di Access. Sto pensando, almeno per ora, di lasciar perdere l'automazione dell'invio mail, e di creare invece un pulsante abbinato ad una macro VBA che faccia il lavoro.

Mi sono creato un database fittizio a casa con:
- Tabella clienti con tutti i dati necessari
- Maschera per l'inserimento di nuovi clienti
- Query per la ricerca dei pazienti con vaccino in scadenza

Vorrei ora creare per l'appunto (tramite VBA) un pulsante che invii a tutti gli indirizzi email della query un email personalizzato con i dati del cliente (nome animale, data ultimo vaccino, ecc) inseriti all'interno del testo.

Qualcosa del tipo:
"Gentile cliente, dai dati in nostro possesso risulta che il suo <<animale>> <<nome animale>> ha effettuato l'ultima vaccinazione in data <<data vaccinazione>>. La invitiamo dunque a prendere contatto presso il nostro studio ecc ecc"

Al termine dell'invio bisognerebbe anche aggiornare uno specifico campo della tabella clienti relativo all'avvenuto invio dell'email onde evitare invii doppi.

Mi sembra di aver capito che il cuore del codice sta nel comando DoCmd.SendObject ma non riesco a capire come fare ad inserire i dati necessari all'interno dell'email.
Immagino che bisogni prima estrarre dalla query gli indirizzi email da immettere nel campo Bbc ed inserire gli altri dati da inserire nel testo del messaggio.

Chi mi dà qualche spunto da cui partire?
Grazie
__________________
" Lascia l'ascia di guerra ed accetta l'accetta dell'amicizia"

Ultima modifica di Dottor Gonzo : 14-12-2012 alle 18:27.
Dottor Gonzo è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2012, 21:04   #6
Braccop
Senior Member
 
L'Avatar di Braccop
 
Iscritto dal: Jan 2002
Messaggi: 2690
ma non ti conviene onestamente eh... ti do' una base da cui partire, con c#

gli using vanno in testa, il resto va dentro al codice della funzione principale da cui vuoi lanciare la procedura

Codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.IO;

System.Data.OleDb.OleDbConnection conn = null;
System.Data.OleDb.OleDbDataReader reader = null;

System.Data.OleDb.OleDbCommand cmd;

String dbpath = "c:\\database\\";
String dbpass = "eventualepassword";

conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dbpath + "database.mdb; Jet OLEDB:Database Password=" + dbpass + ";");
conn.Open();

cmd = new System.Data.OleDb.OleDbCommand("SELECT * FROM CLIENTI WHERE ecc ecc", conn);
reader = cmd.ExecuteReader();

while (reader.Read())
{
// codice che invia le mail qui dentro

}

reader.Close();

conn.Close();
__________________
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders
Braccop è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2012, 17:10   #7
Dottor Gonzo
Senior Member
 
L'Avatar di Dottor Gonzo
 
Iscritto dal: Feb 2008
Messaggi: 1661
Grazie per il suggerimento.

Intanto però, avendo voglia di imparare un po' il vba, mi sono messo a studiare durante il fine settimana.
Sono giunto ad una prima versione del codice, che sembra funzionare a dovere. In sostanza la routine apre la query per la ricerca dei vaccini in scadenza, copia gli indirizzi email, compone il messaggio di posta elettronica, lo invia tramite outlook, aggiorna il database (cambia il campo "richiamo inviato") e scrive un messaggio di conferma.

Ecco il codice:

Codice:
Option Compare Database
Option Explicit

Private Sub Comando172_Click()

    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim ConteggioRecord As Long
    Dim indirizzo As String
    Dim Paziente As String
    Dim NomePaziente As String
    Dim UltimoRichiamo As Date
    Dim olApp As Object
    Dim objMail As Object
    Dim objOutlook As Outlook.Application
    Dim objOutlookMsg As Outlook.MailItem
    
    ' Apre la query "ricerca vaccini in scadenza
    Set db = CurrentDb
    Set rst = db.OpenRecordset("Ricerca vaccini in scadenza")
    
    ' Va avanti in caso di errore
    On Error Resume Next

    ' Controlla se Outlook è aperto
    Set olApp = GetObject(, "Outlook.Application")

    ' Se Outlook non è aperto, apre una nuova istanza
    If Err Then
    Set olApp = CreateObject("Outlook.Application")
    End If

    ' Conteggio record presenti nella query
    ConteggioRecord = rst.RecordCount
    
    ' Se nessun record crea messaggio apposito
    If ConteggioRecord = 0 Then
      MsgBox "Nessun vaccino in scadenza", vbInformation
    
    ' Altrimenti inizia loop
    Else
      rst.MoveLast
      rst.MoveFirst
      Do Until rst.EOF
      ConteggioRecord = ConteggioRecord + 1
        
    'Crea una nuova mail
    Set objMail = olApp.CreateItem(olMailItem)
    
    ' Imposta indirizzo destinatario
    indirizzo = rst![email]
    
    ' Imposta tipo animale
    Paziente = LCase(rst![Animale])
    
    ' Imposta il nome animale
    NomePaziente = rst![Paziente]
    
    ' Imposta data ultimo vaccino
    UltimoRichiamo = rst![Data vaccino norm]

    ' Compila il messaggio email
    With objMail
    .BodyFormat = olFormatPlain
    .To = indirizzo
    .Subject = "Richiamo vaccini prova 3.0"
    .body = "Gentile cliente," & vbCrLf & _
    vbCrLf & _
    "Dai dati in nostro possesso risulta che il suo " & Paziente & " " & NomePaziente & " ha effettuato l'ultima vaccinazione in data " & UltimoRichiamo & "." & _
    vbCrLf & "La invitiamo dunque a prendere contatto presso il nostro studio per fissare un appuntamento per il richiamo annuale." & vbCrLf & _
    vbCrLf & _
    " Centro Veterinario Girard & Gabucci"
    .Send

    End With
    
    ' Modifica campo "richiamo inviato"
    rst.Edit
    rst![richiamo inviato] = True
    rst.Update
    
    ' Passa al record successivo
    rst.Update
    rst.MoveNext
    Loop
    
    ' Messaggio di conferma
    ConteggioRecord = ConteggioRecord - 1
    MsgBox "Inviati correttamente " & ConteggioRecord & " richiami."
    End If
    
    'Chiude query e database
    rst.Close
    db.Close
    Set rst = Nothing
    Set db = Nothing
    Close
    
    
End Sub
Ho fatto alcuni test e, come dicevo, sembra funzionare bene.
Magari qualcuno sa dirmi se ho commesso errori grossolani?

Il passo successivo sarebbe effettivamente automatizzare la procedura. Non so se sia possibile direttamente tramite le operazioni pianificate di Windows oppure sia per l'appunto necessario crearsi un software ad hoc tramite C#.
__________________
" Lascia l'ascia di guerra ed accetta l'accetta dell'amicizia"
Dottor Gonzo è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2013, 15:01   #8
Isabella_AA
Junior Member
 
Iscritto dal: Nov 2013
Messaggi: 2
Buongiorno Dottor Gonzo,
sei riuscito a risolvere il problema? Abbiamo le stesse necessità con la differenza che io sono quasi totalmente digiuna di linguaggi di programmazione vba... il codice va incorporato nel file Access o come eseguibile?

Grazie in anticipo
Isabella_AA è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2013, 15:24   #9
Dottor Gonzo
Senior Member
 
L'Avatar di Dottor Gonzo
 
Iscritto dal: Feb 2008
Messaggi: 1661
Ciao Isabella.
Il progetto dell'invio automatico delle email era in realtà parte integrante di un progetto più complesso che prevedeva l'allestimento di un gestionale completo dello studio veterinario. Vale a dire gestione dei dati di clienti, pazienti, cartelle cliniche, farmaci e loro prezzi, fatturazioni e pure invio automatico di email.

Il lavoro, seppur praticamente finito e funzionante, è ormai fermo da parecchi mesi. In sostanza non mi sentivo pronto ad assumermi la responsabilità di far gestire l'attività commerciale ad un programma da me creato in poche settimane, partendo completamente da zero. Ho provato a richiedere l'appoggio di qualche esperto in materia, ma non è per nulla facile.

Detto questo, il mio consiglio è il seguente. Se ti interessa imparare il funzionamento di Access e di vba, studia più che puoi
In rete si trova parecchio materiale in merito. Iscriviti ai forum dedicati e fai domande. Io ho fatto così e sono rimasto sorpreso delle nozioni che ho imparato in breve tempo.

Per ciò che riguarda l'invio automatico di email la questione è abbastanza complessa. Farlo con Access è possibile, malgrado molti sostengano il contrario. Io ci sono riuscito con il codice che ho esposto sopra. Il codice è lanciato in seguito al click di un apposito pulsante presente nella schermata di Access che gestisce il tutto. Il linguaggio è parte integrante del programma ed è possibile programmarlo direttamente in Access.

È comunque una cosa piuttosto complessa da fare. Ma se ti leggi un minimo di materiale sul tema, dovresti in breve tempo capire la logica e riprodurre ciò che ho fatto ed adattarlo alle tue esigenze.
Non posso darti indicazioni più precise, perché non mi dedico più alla questione da parecchio tempo e faccio davvero fatica a ricordare il significato di tutto ciò che ho scritto prima

Ci sono evidentemente anche altre alternative. In rete si trovano ad esempio diverse applicazioni a pagamento per la gestione di una mailing list, sicuramente molto più complesse ed affidabili di un codice amatoriale

Se hai la possibilità di affrontare la spesa e se non hai voglia o tempo di dedicarti allo studio nerd di linguaggi di programmazione, ci farei più di un pensiero.

Spero di esserti stato utile. Se hai bisogno altre informazioni, chiedi pure.
In bocca al lupo per il tuo progetto!
__________________
" Lascia l'ascia di guerra ed accetta l'accetta dell'amicizia"
Dottor Gonzo è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2013, 17:24   #10
Isabella_AA
Junior Member
 
Iscritto dal: Nov 2013
Messaggi: 2
Grazie Dott. Gonzo; in effetti sto muovendo i primi passi nella direzione suggerita, ho dato un'occhiata al visual basic editor e comincio lontanamente ad intuire alcune dinamiche di funzionamento...
Ho creato il database e inserito il codice... ma non riesco ad eseguirlo.... magari qualcuno del forum può aiutarmi in quest'ultimo passaggio....
Isabella_AA è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2013, 19:11   #11
Dottor Gonzo
Senior Member
 
L'Avatar di Dottor Gonzo
 
Iscritto dal: Feb 2008
Messaggi: 1661
Per eseguire il codice, devi abbinarlo ad un evento.

La prima riga del mio codice (Private Sub Comando172_Click()) si riferisce proprio a questo. Quando il comando 172 (un pulsante immesso nella schermata di Access) viene premuto, viene eseguito il codice che segue.

Se non ricordo male, esiste anche la possibilità di testare il codice mentre lo stai componendo.
Più di così non riesco ad aiutarti, perché è quasi un anno che non tocco Access...
__________________
" Lascia l'ascia di guerra ed accetta l'accetta dell'amicizia"
Dottor Gonzo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Blue Origin rinvia il secondo lancio del...
Nasce l'albo degli influencer 'rilevanti...
Il Digital Networks Act è stato r...
ASUS ROG ha lanciato due nuovi monitor d...
I nuovi iPhone 18 Pro potrebbero present...
Una parte dei Galaxy S26 avrà chi...
Amazon permetterà agli autori ind...
Il caso Zuckerberg a Palo Alto: una scuo...
Texas contro Roblox: il procuratore gene...
Offerte auto da urlo su Amazon: da CarPl...
Windows 11 26H1 in arrivo fra pochi mesi...
Un Black Friday continuo a rilascio lent...
Redmi Pad Pro da 12,1" 2560x2600 pi...
Tesla Roadster rinviata (di nuovo): ora ...
Il nuovo TV premium 2025 Samsung OLED 4K...
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: 01:45.


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