Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Forte della piattaforma Qualcomm Snapdragon X, il notebook Lenovo IdeaPad Slim 3 riesce a coniugare caratteristiche tecniche interessanti ad uno chassis robusto, con autonomia di funzionamento a batteria che va ben oltre la tipica giornata di lavoro. Un notebook dal costo accessibile pensato per l'utilizzo domestico o in ufficio, soprattutto con applicazioni native per architettura ARM
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli
OnePlus risponde alle esigenze di chi cerca un dispositivo indossabile dalle dimensioni contenute con OnePlus Watch 3 43mm. La versione ridotta del flagship mantiene gran parte delle caratteristiche del modello maggiore, offrendo un'esperienza completa in un formato compatto. Il suo limite più grande è abbastanza ovvio: l'autonomia non è il punto di forza di questo modello, ma si raggiungono comodamente le due giornate piene con un uso normale.
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura
BOOX Note Air4 C rappresenta l'ultima incarnazione della categoria dei tablet E Ink a colori di Onyx, e combina le prestazioni di un dispositivo Android con l'ottima tecnologia Kaleido 3 per il display. Con schermo da 10,3 pollici, un processore Qualcomm Snapdragon 750G e 6 GB di RAM, promette un'esperienza completa per lettura, scrittura e produttività. Il prezzo lo posiziona nel segmento premium, ma questo dispositivo è un vero spettacolo!
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


Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli Recensione OnePlus Watch 3 43mm: lo smartwatch c...
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura BOOX Note Air4 C è uno spettacolo: il tab...
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia Recensione Sony Xperia 1 VII: lo smartphone per ...
Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
Marchi prestigiosi a prezzi da outlet su...
Upgrade PC a prezzi mai visti: Amazon sc...
Offerte Tado su Amazon: valvole termosta...
MSI Cyborg 15 con GeForce RTX 4060 e i7 ...
MacBook Air 2025 chip M4 a 949€, ma occh...
La sonda spaziale NASA New Horizons (che...
HONOR MagicPad 3: il tablet con Snapdrag...
Qualcomm mischia le carte: in arrivo ci ...
Meta sceglie Google per lo sviluppo dell...
Redmi Note 15 Pro+: batteria più piccola...
Amazon, un weekend di svendite lampo, ta...
Tutte le offerte sui portatili: tre tutt...
Macchie addio per sempre: SpotClean ProH...
Smartphone con batteria da 8.000 mAh? On...
Dreame L10s Ultra Gen 2 al minimo storic...
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: 12:18.


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