|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
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";
|
|
|
|
|
|
#2 |
|
Senior Member
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
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Aug 2007
Messaggi: 138
|
Quote:
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. |
|
|
|
|
|
|
#4 |
|
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();
}
Che parametri mancherebbero??? |
|
|
|
|
|
#5 | |||
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
Codice:
int mioNumero; double d = Convert.ToDouble(mioNumero.ToString()); Quote:
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:
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]);
}
Ciao. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|||
|
|
|
|
|
#6 |
|
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?
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
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
|
|
|
|
|
|
|
#8 |
|
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? |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Aug 2007
Messaggi: 138
|
Aiutatemi per favore!!!
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Aug 2007
Messaggi: 138
|
Aiutatemi vi pregooo!!
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
Forse mi sfugge qualcosa ?!?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#12 |
|
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?
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#14 |
|
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?
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Aug 2007
Messaggi: 138
|
Per favore aiutami che sto diventando pazzo!!
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:48.




















