Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-09-2007, 10: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, 10: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, 12: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 12:54.
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2007, 15: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, 16: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, 17: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, 17: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, 18: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, 20: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, 09: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, 09: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, 09: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, 09: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, 09: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, 10: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, 10: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 vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
La famiglia Xiaomi 17 sta per registrare...
Nuove auto elettriche che vedremo sul me...
E-bike illegali, a Verona il più ...
Quali sono i giochi più venduti su Steam...
HONOR sta per lanciare un nuovo smartpho...
Jared Isaacman sarà alla guida de...
Il Tesla Cybertruck non arriverà ...
Xiaomi Watch 5 è ufficiale: architettura...
CD Projekt vende GOG: il co-fondatore Mi...
Il meglio di Amazon in 26 prodotti, aggi...
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:27.


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