Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Marathon: arriva il Fortnite hardcore
Marathon: arriva il Fortnite hardcore
Marathon è il titolo multiplayer competitivo del momento. Ecco quali sono le caratteristiche di gioco principali, insieme alle nostre prime considerazioni dopo qualche "run" nell'extraction shooter di Bungie
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-09-2007, 09:31   #1
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
[C#] Visualizzare dati da DB Access in DataGridView

Sto cercando di visualizzare i dati presenti in un DB di Access in un controllo DataGridView in C#. Ho usato i controlli DataSet, BindingSource e BindingNavigator.

Il codice che ho scritto per la visualizzazione è questo:
Codice:
            OleDbConnection Conn = new OleDbConnection();
            OleDbCommand Cmd = new OleDbCommand();
            OleDbDataAdapter Adptr = new OleDbDataAdapter();

            string sConn = "Provider=Microsoft.Jet.OLEDB.4.0; " +
                           "Data source=C:\\Users\\Matteo\\Desktop\\Stramaledetta Cartuccia.mdb";
            string SQL = "SELECT * FROM Vendite";

            Conn.ConnectionString = sConn;
            Conn.Open();
            Cmd.CommandText = SQL;
            Cmd.CommandType = CommandType.Text;
            Cmd.Connection = Conn;
            DataTable Table = new DataTable("Vendite");
            datasetStramaledettacartuccia.Tables.Add(Table);
            Adptr.SelectCommand = Cmd;
            Adptr.Fill(Table);
            Conn.Close();
            bindingSourceVendite.DataMember = "Vendite";
            dataGridView1.DataMember = "Vendite";
Il compilatore non mi restituisce nessun errore però i dati non si visualizzano sulla datagrid. Qualcuno mi sa spiegare perchè?
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2007, 09:35   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
a 'orecchio' credo che manchi il DataSource per la tua griglia:

Codice:
tuaDataGridView.DataSource = tuoDataTable o tuoDataSet
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2007, 11:49   #3
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Quote:
Originariamente inviato da RaouL_BennetH Guarda i messaggi
a 'orecchio' credo che manchi il DataSource per la tua griglia:
Si hai ragione mancava il DataSource della griglia. Un'altra cosa.

Io in un campo del database devo scrivere un numero più grande di un Int32, mi ci vuole un tipo a precisione doppia. Come faccio a cambiare da codice il tipo di dato di un campo del database?

Poi nella stringa di connessione al DB come faccio a indicare la cartella dell'applicazione? Ad esempio |AppDir|\\mioDatabase.mdb

Ultima modifica di voyager18 : 03-09-2007 alle 11:54.
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2007, 14:45   #4
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Io in un campo del database devo scrivere un numero più grande di un Int32, mi ci vuole un tipo a precisione doppia. Come faccio a cambiare da codice il tipo di dato di un campo del database?

Poi nella stringa di connessione al DB come faccio a indicare la cartella dell'applicazione? Ad esempio |AppDir|\\mioDatabase.mdb

Poi per aggiornare il database Access con i dati che ho immesso nella datagrid ho scirtto questo codice:

Codice:
        private void bindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            bindingSource.EndEdit();
            string SQL = "INSERT INTO [Vendite] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
            string sConn = "Provider=Microsoft.Jet.OLEDB.4.0; " +
                           "Data source=C:\\Users\\Matteo\\Desktop\\Stramaledetta Cartuccia.mdb";

            Conn.ConnectionString = sConn;
            Conn.Open();
            Cmd.CommandText = SQL;
            Cmd.CommandType = CommandType.Text;
            Cmd.Connection = Conn;
            Adatt.InsertCommand = Cmd;
            Adatt.Update(dataSet, "Vendite");
            Conn.Close();
        }
Il compilatore mi restituisce un errore a Adatt.Update(dataSet, "Vendite"); e il messaggio di errore è questo: "Nessun valore specificato per alcuni parametri necessari."

Che parametri mancherebbero???
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2007, 15:28   #5
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da voyager18 Guarda i messaggi
Io in un campo del database devo scrivere un numero più grande di un Int32, mi ci vuole un tipo a precisione doppia. Come faccio a cambiare da codice il tipo di dato di un campo del database?
Il modo più semplice che mi viene in mente è usare il metodo: Convert.ToDouble() ricordandoti però che il valore che devi passare al metodo è una stringa, quindi al tuo Int32 devi a sua volta passare il metodo ToString(); per esempio:

Codice:
int mioNumero;

double d = Convert.ToDouble(mioNumero.ToString());
Quote:
Poi nella stringa di connessione al DB come faccio a indicare la cartella dell'applicazione? Ad esempio |AppDir|\\mioDatabase.mdb
Codice:
//esempio:

tuaDir = @"mioDatabase.mdb";

//perchè di default se non metti un path diverso, i file che cerchi di aprire
//o ai quali cerchi di accedere sono già di base nella cartella dell'applicazione.
//il carattere "@" ti permette di risparmiare i doppi slash
Quote:
Poi per aggiornare il database Access con i dati che ho immesso nella datagrid ho scirtto questo codice:


Codice:
        private void bindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            bindingSource.EndEdit();
            string SQL = "INSERT INTO [Vendite] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
            string sConn = "Provider=Microsoft.Jet.OLEDB.4.0; " +
                           "Data source=C:\\Users\\Matteo\\Desktop\\Stramaledetta Cartuccia.mdb";

            Conn.ConnectionString = sConn;
            Conn.Open();
            Cmd.CommandText = SQL;
            Cmd.CommandType = CommandType.Text;
            Cmd.Connection = Conn;
            Adatt.InsertCommand = Cmd;
            Adatt.Update(dataSet, "Vendite");
            Conn.Close();
        }
Il compilatore mi restituisce un errore a Adatt.Update(dataSet, "Vendite"); e il messaggio di errore è questo: "Nessun valore specificato per alcuni parametri necessari."

Che parametri mancherebbero???
Innanzitutto se usi SqlServer i parametri devi passarli con "@" e non con "?".
Questi ultimi sono relativi a MySql. L'esempio che ti faccio è con SqlServer

Si chiamano SqlParameter e devono essere definiti prima:

Devi decidere o se creare un array di parametri o di trattarli uno alla volta:

Codice:
//ti consiglio l'array
SqlParameter[] parameters = new SqlParameter[3];

//definiamo prima che tipo di dato è
parameters[0] = new SqlParameter("@nome_campo_tua_tabella", SqlDbType.TipoDiDatoDelDatabase); //per esempio un Intero o una stringa..

//poi definiamo da dove deve prendere il valore
parameters[0].Value = tuaGriglia.Rows[numero_riga].Cells[numero_di_cella].Value;

//e questo per ogni parametro;

//poi questi parametri li devi aggiungere al tuo insert command, per es.:

cmd.Parameters.Add(parameters[0]);

//oppure puoi ciclarli con un for od un foreach:

for(int i = 0; i < numeroParametri; i++)
{
    cmd.Parameters.Add(parameters[i]);
}
Tieni presente però che le mie sono solo indicazioni, non sono molto bravo a programmare.

Ciao.

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2007, 16:33   #6
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Ho seguito il tuo metodo con l'array e ha funzionato. C'è però un modo per salvare nel database Access solo i dati che sono stati modificati dopo l'ultimo salvataggio?
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2007, 16:36   #7
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da voyager18 Guarda i messaggi
Ho seguito il tuo metodo con l'array e ha funzionato. C'è però un modo per salvare nel database Access solo i dati che sono stati modificati dopo l'ultimo salvataggio?
Beh, in questo caso devi fare una query di aggiornamento, cioè, invece di fare:

Codice:
string SQL = "INSERT INTO blablabla...";

//devi fare:

string SQL = "UPDATE nomeTuaTabella SET campo1 = nuovo_valore, campo2 = nuovo_valore WHERE condizione_per_la_sostituzione... ";
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2007, 17:16   #8
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Quella che mi hai detto tu è per aggiornare dei campi già esistenti giusto? Io invece devo fare:

- Apro il database con alcuni record già esistenti
- Inserisco dei nuovi record
- Salvo il database

Come faccio a creare dei parametri per l'oggetto Command che includano però solo i nuovi record che ho inserito?
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2007, 19:17   #9
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Aiutatemi per favore!!!
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2007, 08:13   #10
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Aiutatemi vi pregooo!!
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2007, 08:14   #11
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da voyager18 Guarda i messaggi
Quella che mi hai detto tu è per aggiornare dei campi già esistenti giusto? Io invece devo fare:

- Apro il database con alcuni record già esistenti
- Inserisco dei nuovi record
- Salvo il database

Come faccio a creare dei parametri per l'oggetto Command che includano però solo i nuovi record che ho inserito?
Scusami, non riesco a capire bene; Allora, tu apri il tuo db e leggi i dati già presenti in una tabella, e li piazzi sulla griglia. Ora, se devi inserire nuovi record nella tabella, allora ti basta la INSERT, se invece devi aggiornare i dati già presenti devi fare l'UPDATE.

Forse mi sfugge qualcosa ?!?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2007, 08:19   #12
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Hai capito bene. Però la mia domanda è questa. Come faccio ad aggiornare/inserire solo i record che ho modificato?
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2007, 08:31   #13
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da voyager18 Guarda i messaggi
Hai capito bene. Però la mia domanda è questa. Come faccio ad aggiornare/inserire solo i record che ho modificato?
Allora, la parola chiave è proprio "aggiornare". L'unico modo che conosco per aggiornare un record già presente è l'utilizzo di una query di update. Altrimenti dovresti ricorrere all'uso di `trigger` ma in questo caso non saprei aiutarti dato che sono ignorante su questi `cosi`
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2007, 08:37   #14
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
e per i parametri dell'oggetto OleDbCommand? cioè come faccio ad inserire nella query di aggiornamento tutti i dati modificati o aggiunti?
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2007, 09:37   #15
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Per favore aiutami che sto diventando pazzo!!
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2007, 09:47   #16
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da voyager18 Guarda i messaggi
e per i parametri dell'oggetto OleDbCommand? cioè come faccio ad inserire nella query di aggiornamento tutti i dati modificati o aggiunti?
Credo che tu debba separare le cose, intendo l'inserimento e l'aggiornamento, ma questo a livello di `motore sql`. In C# tramite i DataSet potresti gestire tutto automaticamente documentandoti sulle proprietà e sui metodi di quest'oggetto. A livello puramente di sql invece, potresti tentare di evitare sql da codice ma creare delle stored procedure. Purtroppo sono entrambi campi nei quali sono ignorante
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Intel riacquista la Fab 34 in Irlanda, u...
SpaceX ha lanciato la missione Transport...
Occhiali smart in affitto: la nuova stra...
L'aeroplano supersonico ''silenzioso'' N...
Il primo chip a 2 nm di MediaTek sarà a...
Blue Origin lancerà il satellite ...
Roscosmos torna a lanciare capsule verso...
La connettività satellitare anche sui di...
Astronauta italiano sul suolo lunare gra...
Senza formazione ai dipendenti l'IA non ...
Google rende disponibile l'opzione per i...
Oracle licenzia migliaia di persone con ...
Il semaforo bianco sta arrivando: cos'è,...
FRITZ!Repeater 2700 disponibile su Amazo...
Xiaomi TV A Pro: QLED 4K da 65'' con Goo...
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: 23:44.


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