Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III è la nuvoa fotocamera mirrorless pensata per chi si avvicina alla fotografia e ricerca una soluzione leggera e compatta, da avere sempre a disposizione ma che non porti a rinunce quanto a controllo dell'immagine.
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Da Las Vegas, la visione di Larry Ellison e la concretezza di Clay Magouyrk definiscono la nuova traiettoria di Oracle: portare l’intelligenza artificiale ai dati, non i dati all’intelligenza, costruendo un’infrastruttura cloud e applicativa in cui gli agenti IA diventano parte integrante dei processi aziendali, fino al cuore delle imprese europee
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-01-2009, 16:44   #1
alucard82
Member
 
L'Avatar di alucard82
 
Iscritto dal: May 2006
Città: Bari
Messaggi: 274
[Visual C#] Aiuto operazioni su DB Access 2007

Ciao a tutti. Innanzi tutto vorrei precisare ke uso c# da 2 gg (sto usando Visual Studio 2008). Sto provando a scrivere una piccola applicazione che faccia delle semplici funzioni su un database (che ho creato in access 2007 quindi *.accdb) del tipo: mostrare i dati, fare ricerca, aggiungere elementi alle varie tabelle del db e anke l'aggiornamento di alcune tuple nel caso.
Considerando che nn sò usare visual c#, vi spiego cosa ho fatto fino ad ora:
- ho caricato il database da Dati -> Aggiunta nuova origine di dati -> Database -> ho creato una nuova connessione del tipo "File di database Microsoft Access (OLE DB)".
fatto questo mi è apparsa una finestra dove scegliere le mie tabelle e le ho scelte . fin qui tutto ok. Poi per visualizzare le tuple delle tabelle nel mio form ho usato un DataGridView. L'ho posizionato sul form, ho scelto le tabelle e se eseguo il programma mi fa vedere le tuple della mia tabella.
Il mio problema lo ho nel momento in cui voglio inserire(o modificare o cancellare) una nuova tupla nel database.
Mi spiego meglio: ho una textbox e un pulsante, e voglio ke quando premo il pulsante mi aggiunga nella tupla quello che sta nella textbox (la tabella ha solo 2 campi ID e FORNITORE). Sono riuscito, facendo qualche prova a casaccio ad aggiungere, solo una riga alla GridView con:
this.memoSNDataSet.Fornitore.AddFornitoreRow(txtFornitori.Text);
(anche se nn sò se è giusto), ma in questo modo mi aggiunge nella gridview nel campo ID un numero negativo e non sò neanche il perchè.
Quindi vi chiedo come faccio ad inserire la tupla del DB e aggiorno la gridview con il nuovo valore?

oppure come faccio a fare una query stupidissima del tipo:
INSERT into TABELLA campo VALUES valore; (nn ricordo perfettamente la sintassi, nn vi arrabbiate se è sbagliata )
??

Vi ringrazio per le risposte. sono online se vi serve sapere altro
__________________
MY PC --> Seasonic M12-500Watt + Asus P5B Deluxe WiFi/AP + Intel Q9550 + 4 GB G.Skill 1066Mhz + 1 Hd W.D. 74 GB Raptor 10kRpm + Seagate 750GB + Asus Nvidia 9800GTX!

Ultima modifica di alucard82 : 25-01-2009 alle 16:48.
alucard82 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2009, 11:17   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Se usi C# da poco, il mio consiglio è di cominciare a scrivere codice, anzichè affidarti alle procedure preconfezionate. Molto utili e veloci da usare, ma anche meno flessibili da modificare e poi se insorgono errori, forse anche più rognose da sistemare.
Si possono eseguire Select / Insert / Update e Delete con poche righe di codice ( unico componente richiesto è il DataGridView sulla Form ).

Ti faccio qualche esempio che uso spesso ( Access 2003, per 2007 cambia l'estensione... ) :

1. Eseguo una Select ( pulsante cmd_select ) e popolo il DataGridView1 :

Codice:
        private string nomeDB = "nomeDB.mdb";
        private string percorsoDB = Application.StartupPath + "\\";
        private string strCN; 
        private string nomeTabella = "nomeTabella";

        private OleDbConnection CN = null;
        private OleDbDataAdapter DA = null;
        private DataSet DS = new DataSet();

        private void cmd_select_Click(object sender, EventArgs e)
        {
            // Select per popolare DataGridView : 
            DS.Clear();
            strCN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + percorsoDB + nomeDB + ";Persist Security Info=False";
            CN = new OleDbConnection(strCN);
            string strSql = "SELECT * FROM " + nomeTabella;
            CN.Open();
            OleDbCommand OCMD = new OleDbCommand();
            OCMD.Connection = CN;
            OCMD.CommandText = strSql;
            DA = new OleDbDataAdapter(OCMD);
            DA.Fill(DS, nomeTabella);
            dataGridView1.DataSource = DS;
            dataGridView1.DataMember = nomeTabella;
            CN.Close();
        }
2. Eseguo una Insert :

Codice:
        private void cmd_insert_Click(object sender, EventArgs e)
        {
            // Insert :
            strCN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + percorsoDB + nomeDB + ";Persist Security Info=False";
            CN = new OleDbConnection(strCN);
            string strSql = "INSERT INTO " + nomeTabella + " (id, fornitore) VALUES (" + 10 + ", " + "'" + "nuovoFornitore" + "'" + ")";
            CN.Open();
            OleDbCommand OCMD = new OleDbCommand();
            OCMD.Connection = CN;
            OCMD.CommandText = strSql;
            OCMD.ExecuteNonQuery();
            CN.Close();
        }
Per visualizzare l'ultimo aggiornamento sulla GridView basta richiamare il codice sotto il cmd_select...
Forse un po' prolisso, ma sicuramente meglio per iniziare ad usare gli oggetti ADO.Net e vedere come collegarli...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2009, 01:15   #3
alucard82
Member
 
L'Avatar di alucard82
 
Iscritto dal: May 2006
Città: Bari
Messaggi: 274
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Se usi C# da poco, il mio consiglio è di cominciare a scrivere codice, anzichè affidarti alle procedure preconfezionate. Molto utili e veloci da usare, ma anche meno flessibili da modificare e poi se insorgono errori, forse anche più rognose da sistemare.
Si possono eseguire Select / Insert / Update e Delete con poche righe di codice ( unico componente richiesto è il DataGridView sulla Form ).

Ti faccio qualche esempio che uso spesso ( Access 2003, per 2007 cambia l'estensione... ) :

1. Eseguo una Select ( pulsante cmd_select ) e popolo il DataGridView1 :

Codice:
        private string nomeDB = "nomeDB.mdb";
        private string percorsoDB = Application.StartupPath + "\\";
        private string strCN; 
        private string nomeTabella = "nomeTabella";

        private OleDbConnection CN = null;
        private OleDbDataAdapter DA = null;
        private DataSet DS = new DataSet();

        private void cmd_select_Click(object sender, EventArgs e)
        {
            // Select per popolare DataGridView : 
            DS.Clear();
            strCN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + percorsoDB + nomeDB + ";Persist Security Info=False";
            CN = new OleDbConnection(strCN);
            string strSql = "SELECT * FROM " + nomeTabella;
            CN.Open();
            OleDbCommand OCMD = new OleDbCommand();
            OCMD.Connection = CN;
            OCMD.CommandText = strSql;
            DA = new OleDbDataAdapter(OCMD);
            DA.Fill(DS, nomeTabella);
            dataGridView1.DataSource = DS;
            dataGridView1.DataMember = nomeTabella;
            CN.Close();
        }
2. Eseguo una Insert :

Codice:
        private void cmd_insert_Click(object sender, EventArgs e)
        {
            // Insert :
            strCN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + percorsoDB + nomeDB + ";Persist Security Info=False";
            CN = new OleDbConnection(strCN);
            string strSql = "INSERT INTO " + nomeTabella + " (id, fornitore) VALUES (" + 10 + ", " + "'" + "nuovoFornitore" + "'" + ")";
            CN.Open();
            OleDbCommand OCMD = new OleDbCommand();
            OCMD.Connection = CN;
            OCMD.CommandText = strSql;
            OCMD.ExecuteNonQuery();
            CN.Close();
        }
Per visualizzare l'ultimo aggiornamento sulla GridView basta richiamare il codice sotto il cmd_select...
Forse un po' prolisso, ma sicuramente meglio per iniziare ad usare gli oggetti ADO.Net e vedere come collegarli...
Ciao. Innanzi tutto ti ringrazio per la risposta.
Ho avuto 2 problemi in quello che hai scritto:
1) non mi mi trovava Oledbconnection e la soluzione era mettere una using all'inizio del codice ovvero:

Codice:
using System.Data.OleDb;
(sò che lo sai, ma lo scrivo nel caso dovesse servire a qualcun altro)

2) L'altra cosa che non mi funzionava è stata la connessione al database Access 2007. Ho cercato un pò in giro e se dovesse essere d'aiuto a qualcun altro ho trovato la stringa di connessione giusta:

Codice:
strCN = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + percorsoDB + nomeDB + "; Persist Security Info=False";
Detto questo per ora sembra funzionare. Nel caso dovessi avere altri problemi proverò di nuovo a postare.
Ti ringrazio ancora

Ciao
__________________
MY PC --> Seasonic M12-500Watt + Asus P5B Deluxe WiFi/AP + Intel Q9550 + 4 GB G.Skill 1066Mhz + 1 Hd W.D. 74 GB Raptor 10kRpm + Seagate 750GB + Asus Nvidia 9800GTX!
alucard82 è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2009, 09:44   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da alucard82 Guarda i messaggi
Codice:
strCN = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + percorsoDB + nomeDB + "; Persist Security Info=False";
Detto questo per ora sembra funzionare. Nel caso dovessi avere altri problemi proverò di nuovo a postare.
Ti ringrazio ancora

Ciao
Già infatti avevo specificato che il mio esempio era su Access 2003.
Cmq, per le stringhe di connessione, se già non lo hai trovato per conto tuo, suggerisco di dare un'occhiata qui :

http://www.connectionstrings.com/

Il nome dice tutto...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2009, 12:08   #5
alucard82
Member
 
L'Avatar di alucard82
 
Iscritto dal: May 2006
Città: Bari
Messaggi: 274
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Già infatti avevo specificato che il mio esempio era su Access 2003.
Cmq, per le stringhe di connessione, se già non lo hai trovato per conto tuo, suggerisco di dare un'occhiata qui :

http://www.connectionstrings.com/

Il nome dice tutto...
sisi è il sito da dove l'ho recuperata grazie ancora.

senti una domanda stupida, c'è un modo x refreshare subito la tabella una volta fatta una insert sul database? così riesco a vedere quello che ho appena inserito. grazie
__________________
MY PC --> Seasonic M12-500Watt + Asus P5B Deluxe WiFi/AP + Intel Q9550 + 4 GB G.Skill 1066Mhz + 1 Hd W.D. 74 GB Raptor 10kRpm + Seagate 750GB + Asus Nvidia 9800GTX!

Ultima modifica di alucard82 : 27-01-2009 alle 12:11.
alucard82 è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2009, 21:44   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da alucard82 Guarda i messaggi
senti una domanda stupida, c'è un modo x refreshare subito la tabella una volta fatta una insert sul database? così riesco a vedere quello che ho appena inserito. grazie
Basta che esegui lo stesso codice della prima Select, che serve allo scopo di popolare il DataGridView. Comunque ciò dipende dal numero di oggetti Private a livello di Form, che hai già inizializzato.
Nel mio caso basta :

Codice:
            DS.Clear();
            string strSql = "SELECT * FROM " + nomeTabella;
            CN.Open();
            OleDbCommand OCMD = new OleDbCommand();
            OCMD.Connection = CN;
            OCMD.CommandText = strSql;
            DA = new OleDbDataAdapter(OCMD);
            DA.Fill(DS, nomeTabella);
            dataGridView1.DataSource = DS;
            dataGridView1.DataMember = nomeTabella;
            CN.Close();
Almeno... io preferisco così, avere il controllo diretto, piuttosto che avere cose in giro, come connessioni che rimangono aperte... Ecc...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2009, 00:57   #7
alucard82
Member
 
L'Avatar di alucard82
 
Iscritto dal: May 2006
Città: Bari
Messaggi: 274
qualcuno mi può suggerire un buon manuale su visual c#? non mi interessa la parte sulla programmazione (if, cicli, sintassi) ma uno che mi spieghi le varie funzioni con i vari metodi e come si usano.
Vi ringrazio tutti
ciao
__________________
MY PC --> Seasonic M12-500Watt + Asus P5B Deluxe WiFi/AP + Intel Q9550 + 4 GB G.Skill 1066Mhz + 1 Hd W.D. 74 GB Raptor 10kRpm + Seagate 750GB + Asus Nvidia 9800GTX!
alucard82 è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2009, 10:00   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da alucard82 Guarda i messaggi
qualcuno mi può suggerire un buon manuale su visual c#? non mi interessa la parte sulla programmazione (if, cicli, sintassi) ma uno che mi spieghi le varie funzioni con i vari metodi e come si usano.
Vi ringrazio tutti
ciao
Beh, trovare un manuale generico che eviti di vendere un bel po' di carta sull'introduzione alla sintassi, la vedo dura...
Secondo me l'unica sono le MSDN Library ( Online o Offline ).
Cerchi il Metodo/Funzione/Proprietà che ti interessa e di solito trovi anche qualche esempio di utilizzo.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2009, 19:52   #9
alucard82
Member
 
L'Avatar di alucard82
 
Iscritto dal: May 2006
Città: Bari
Messaggi: 274
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Beh, trovare un manuale generico che eviti di vendere un bel po' di carta sull'introduzione alla sintassi, la vedo dura...
Secondo me l'unica sono le MSDN Library ( Online o Offline ).
Cerchi il Metodo/Funzione/Proprietà che ti interessa e di solito trovi anche qualche esempio di utilizzo.
Grazie per la risposta, sei stato gentilissimo. Cmq è proprio quello che sto facendo. Cerco un pò li e un pò su qualche sorgente (by google) e cerco di risolvere il mio problema.

Ti vorrei chiedere un'altra cosina, sempre se l'hai mai utilizzata, per caso sai come aggiungere voci al menù contestuale di windows (quello che si ottiene con il tasto destro del mouse, es tipo Estrai con Winrar) ? Vorrei fare una piccola applicazione che mi permetta, selezionati due file, di rinominarli cambiando solo l'estensione. Il tutto direttamente da Vista/XP (quindi senza aprire un programma a parte).

Grazie ancora per tutto
__________________
MY PC --> Seasonic M12-500Watt + Asus P5B Deluxe WiFi/AP + Intel Q9550 + 4 GB G.Skill 1066Mhz + 1 Hd W.D. 74 GB Raptor 10kRpm + Seagate 750GB + Asus Nvidia 9800GTX!
alucard82 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2009, 11:29   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da alucard82 Guarda i messaggi
per caso sai come aggiungere voci al menù contestuale di windows (quello che si ottiene con il tasto destro del mouse, es tipo Estrai con Winrar) ? Vorrei fare una piccola applicazione che mi permetta, selezionati due file, di rinominarli cambiando solo l'estensione. Il tutto direttamente da Vista/XP (quindi senza aprire un programma a parte).
Chi non muore si rivede...

Beh, non sarà certo cosa semplice ( non l'ho mai fatto, e credo non lo farò mai, piuttosto creo un'interfaccia tipo-explorer nella mia applicazione e faccio fare tutto da lì... ).
Personalmente non mi piace proprio l'approccio diretto al registro di sistema.
Voglio dire, usiamo .Net, abbiamo a disposizione controlli grafici potenti e un Signor Framework ! L'unica cosa che ancora tollero è la chiamata diretta ( in lettura ) alle API, perchè in certi casi è praticamente l'unica scelta possibile...

Un esempio abbastanza compatto lo trovi qui :
http://blog.voidnish.com/?p=17

- Secondo me non puoi fare a meno di interferire col registro.

- Dovrai gestirti anche la successiva rimozione del nuovo Item, alla chiusura / disinstallazione del tuo programma...

- E poi per intercettare le azioni sui nuovi items e far eseguire le operazioni desiderate ?

- E poi chi ci dice che l'accesso al registro piacerà a XP e a Vista nello stesso modo ?

Insomma, buona fortuna...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2009, 17:00   #11
alucard82
Member
 
L'Avatar di alucard82
 
Iscritto dal: May 2006
Città: Bari
Messaggi: 274
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Chi non muore si rivede...

Beh, non sarà certo cosa semplice ( non l'ho mai fatto, e credo non lo farò mai, piuttosto creo un'interfaccia tipo-explorer nella mia applicazione e faccio fare tutto da lì... ).
Personalmente non mi piace proprio l'approccio diretto al registro di sistema.
Voglio dire, usiamo .Net, abbiamo a disposizione controlli grafici potenti e un Signor Framework ! L'unica cosa che ancora tollero è la chiamata diretta ( in lettura ) alle API, perchè in certi casi è praticamente l'unica scelta possibile...

Un esempio abbastanza compatto lo trovi qui :
http://blog.voidnish.com/?p=17

- Secondo me non puoi fare a meno di interferire col registro.

- Dovrai gestirti anche la successiva rimozione del nuovo Item, alla chiusura / disinstallazione del tuo programma...

- E poi per intercettare le azioni sui nuovi items e far eseguire le operazioni desiderate ?

- E poi chi ci dice che l'accesso al registro piacerà a XP e a Vista nello stesso modo ?

Insomma, buona fortuna...
heheheh hai perfettamente ragione. quasi quasi mi creo un programmino piccolino e con le espressioni regolari vedo di fare il tutto

senti mi è capitato un problema relativo ai datagridview e alla stampa.
Allora l'applicazione che stavo facendo è praticamente finita.
Sono riuscito a visualizzare la preview della datagridview, però quando clicco sulla stampantina piccola nella preview, il programma stampa direttametne e non mi permette di scegliere su quale stampante fare l'output.
non è che sapresti aiutarmi? Ecco qui uno sputo di codice:
Codice:
private void btnOperazioneStampa_Click(object sender, EventArgs e)
        {
// ASSOCIO IL DOCUMENTO AL PRINTPREVIEWDIALOG
                    printPreviewDialog1.Document = this.printDocument1;

// TITOLO FINESTRA DI STAMPA
                    printPreviewDialog1.Document.DocumentName = "\n\nStampa Dettaglio Operazione";

// IMPOSTO LO ZOOM
                    printPreviewDialog1.PrintPreviewControl.Zoom = 1.0;

// IMPOSTO LA GRANDEZZA DEL printPreviewDialog
                    printPreviewDialog1.Width = (Convert.ToInt16 (Screen.PrimaryScreen.Bounds.Width * 0.7));
                    printPreviewDialog1.Height = (Convert.ToInt16 (Screen.PrimaryScreen.Bounds.Height * 0.7));

// MOSTRO IL DIALOG
                    printPreviewDialog1.ShowDialog();
        }

// Questo metodo l'ho fatto più piccolo, ho tolto altri piccoli settaggi, tipo il font, il pennello, il rettangolo ecc ecc.
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
            // STAMPA ELEMENTI DATAGRIDVIEW
            int i = dettaglioDataGridView.Rows.Count;
            int x = 0;
            int distanza = 40;

            e.Graphics.DrawString("Descrizione", printFont, Brushes.Black, 80, ((x * distanza) + 300));
            e.Graphics.DrawString("Numero Seriale", printFont, Brushes.Black, 470, ((x * distanza) + 300));
            for (x = 0; x < i; x++)
            {
                e.Graphics.DrawString(dettaglioDataGridView.Rows[x].Cells["DESCRIZIONE"].Value.ToString(), printList, Brushes.Black, 80, ((x * distanza) + 350));
                e.Graphics.DrawString(dettaglioDataGridView.Rows[x].Cells["SERIALNUMBER"].Value.ToString(), printList, Brushes.Black, 470, ((x * distanza) + 350));
            }
}
Quindi in poche parole si vede il preview ma poi quando faccio print nn mi fa scegliere la stampante. Puoi aiutarmi?

Ah quasi dimenticavo...grazie per tutto l'aiuto che mi hai dato
__________________
MY PC --> Seasonic M12-500Watt + Asus P5B Deluxe WiFi/AP + Intel Q9550 + 4 GB G.Skill 1066Mhz + 1 Hd W.D. 74 GB Raptor 10kRpm + Seagate 750GB + Asus Nvidia 9800GTX!

Ultima modifica di alucard82 : 14-03-2009 alle 17:03.
alucard82 è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2009, 14:12   #12
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da alucard82 Guarda i messaggi
Sono riuscito a visualizzare la preview della datagridview, però quando clicco sulla stampantina piccola nella preview, il programma stampa direttametne e non mi permette di scegliere su quale stampante fare l'output.
...
...
Quindi in poche parole si vede il preview ma poi quando faccio print nn mi fa scegliere la stampante. Puoi aiutarmi?
Nessuno ti vieta di aprire prima una printDialog, in cui l'utente può selezionare la stampante e relativi settings.
Poi intercetti l'Ok sulla printDialog e apri la printPreviewDialog :

Codice:
          // Test sul pulsante premuto dall'utente sul printDialog1
            if (printDialog1.ShowDialog() == DialogResult.OK) 
            {
                // Senza Anteprima
                // printDocument1.Print();

                // Con Anteprima
                printPreviewDialog1.Document = printDocument1;
                printPreviewDialog1.ShowDialog();
            }
Tieni presente che le impostazioni di stampa sono comunque legate all'oggetto printDocument1. E' lui che fa tutto il lavoro, perciò non si corre il rischio di perdere le impostazioni passando da una dialog all'altra.

Il problema vero sarà intercettare i possibili errori Win32Exception, dovuti a molteplici cause ( stampante non pronta ecc... ), a cui ti esponi con questo metodo... Ma intanto prova così.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 16-03-2009, 00:36   #13
alucard82
Member
 
L'Avatar di alucard82
 
Iscritto dal: May 2006
Città: Bari
Messaggi: 274
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Nessuno ti vieta di aprire prima una printDialog, in cui l'utente può selezionare la stampante e relativi settings.
Poi intercetti l'Ok sulla printDialog e apri la printPreviewDialog :

Codice:
          // Test sul pulsante premuto dall'utente sul printDialog1
            if (printDialog1.ShowDialog() == DialogResult.OK) 
            {
                // Senza Anteprima
                // printDocument1.Print();

                // Con Anteprima
                printPreviewDialog1.Document = printDocument1;
                printPreviewDialog1.ShowDialog();
            }
Tieni presente che le impostazioni di stampa sono comunque legate all'oggetto printDocument1. E' lui che fa tutto il lavoro, perciò non si corre il rischio di perdere le impostazioni passando da una dialog all'altra.

Il problema vero sarà intercettare i possibili errori Win32Exception, dovuti a molteplici cause ( stampante non pronta ecc... ), a cui ti esponi con questo metodo... Ma intanto prova così.
Mmmm non ci avevo pensato...stanotte provo e ti faccio sapere

Intanto grazie
__________________
MY PC --> Seasonic M12-500Watt + Asus P5B Deluxe WiFi/AP + Intel Q9550 + 4 GB G.Skill 1066Mhz + 1 Hd W.D. 74 GB Raptor 10kRpm + Seagate 750GB + Asus Nvidia 9800GTX!
alucard82 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1 Micron e millisecondi: la piattaforma ServiceNow...
ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme ASUS GeForce RTX 5080 Noctua OC Edition: una cus...
Un post di Sean Duffy (amministratore ad...
SpaceX ha già lanciato oltre 135 ...
GeForce RTX 5060 Ti 8GB: non piace neanc...
Isar Aerospace Spectrum: il fallimento d...
'State lontani dalla GeForce RTX 5090 Fo...
GJ 251 c è la ''super-Terra'' sco...
Halo è ufficialmente multipiattaf...
Windows 11 25H2 e 24H2: come attivare su...
Brembo Solutions e Microsoft danno vita ...
Migliaia di pacchi Amazon rubati ai legi...
Ex CEO di Stellantis: Musk lascerà...
Record storico per i giochi Windows su L...
GPU introvabili: Microsoft accusa i mine...
RedTiger prende di mira i gamer: furto d...
Microsoft sotto accusa: avrebbe nascosto...
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: 04:19.


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