Visual Studio 2019. Testo sulla barra al centro e salvare i dati in Ac...

giovedì 23 luglio 2020 - 08.42
Tag Elenco Tags  C#

Pacifico Profilo | Junior Member

Gent.mi,

una richiesta che potrebbe essere banale.

In un form con il seguente codice, inserisco un nome alla barra del Form dove è situato sulla destra la X e gradirei sapere se è possibile averlo al centro della barra e possibilmente in grassetto:

> this.Text = "Aggiungi Record"; <

Inoltre gentilmente gradirei salvare i dati in Access.

Il DataGridView, viene popolato dalle TextBox con il seguente codice:

> table.Rows.Add(Txt_Nome.Text, Txt_Cognome.Text, Txt_Citta.Text, Txt_Professione.Text);
dataGridView1.DataSource = table; <

Gentilmente gradirei sapere con un pulsante, salvare i record dal DataGridView in Database di Access.
Il Database di Access è: Dati.Mdb e le tabelle "Documenti".

Anticipatamente ringrazio e fiducioso di una gradita soluzione, saluto.
Domenico.

morpheus87mi Profilo | Junior Member

Buongiorno Domenico,
per allineare, al centro, il titolo della form è sufficiente scrivere il seguente metodo e richiamarlo dall'evento Form Load

private void UpdateTextPosition()
{
Graphics g = this.CreateGraphics();
Double startingPoint = (this.Width / 2) - (g.MeasureString(this.Text.Trim(), this.Font).Width / 2);
Double widthOfASpace = g.MeasureString(" ", this.Font).Width;
String tmp = " ";
Double tmpWidth = 0;

while ((tmpWidth + widthOfASpace) < startingPoint)
{
tmp += " ";
tmpWidth += widthOfASpace;
}

this.Text = tmp + this.Text.Trim();
}


Per quanto riguarda il salvataggio dei dati, dovrei sapere il tipo di connessione che stai utilizzando (OLE DB, ODBC, EF .. etc)

______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo morpheur87mi,

per il titolo sulla barra OK e grazie della tempestività.

Per il Database sono in difficoltà.
Ho sempre programmato in VB.net e da un mese sono passato al C#.
Ho reralizzato 2 programmi e l'ultimo l'ho realizzato salvando i dati in XML e gradirei salvare anche in Database di Access.
La connessione che dovrò utilizzare dovrebbe essere OLE DB come al VBnet.
Cercherò di realizzare e sarà mia premura comunicare l'esito sperando di riuscire.

Sono sempre grato per la gentilezza, cortesia e per l'aiuto.
Domenico.

morpheus87mi Profilo | Junior Member

Buongiorno Domenico,
è sufficiente
OleDbCommandBuilder build = new OleDbCommandBuilder(adapter);

per la creazione della query di aggiornamento e sull'evento clic sul pulsante Salva record, scrivere la riga seguente:

adapter.Update(dt);


dove adapter è un oggetto di OleDbDataAdapter e dt è un oggetto di DataTable
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo morpheur87mi,

dire grazie è poco per la disponibilità e l'aiuto che ricevo.
Attualmente riesco a leggere i dati in C# inseriti dal Database di Access in DataGridView con il seguente codice:

using System.Data.OleDb;

public partial class Form1 : Form
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\Tabella.mdb";
OleDbConnection Conn;
OleDbDataAdapter Adapter;
string tabella = "Tabella";
DataSet Ds = new DataSet();

private void Form1_Load(object sender, EventArgs e)
{
Conn = new OleDbConnection(connStr);
string sSQL = ("SELECT * FROM " + tabella);
OleDbCommand Cmd = new OleDbCommand(sSQL, Conn);
Adapter = new OleDbDataAdapter(Cmd);
OleDbCommandBuilder CB = new OleDbCommandBuilder(Adapter);
Adapter.Fill(Ds, tabella);
DataGridView1.DataSource = Ds.Tables[tabella];

Purtroppo non riesco ad inserire i dati dalle TextBox in DataGridView e successivamente salvare con un pulsante in Database di Access.

Domenico.

morpheus87mi Profilo | Junior Member

Semplicemente si può salvare i dati delle TextBox direttamente nel db e poi ricaricare la DataGrid.
Quindi basta eseguire l'istruzione INSERT

String sSQL = "INSERT INTO tabella(campo1, campo2, etc) VALUES('"+ TextBox1.Text +"','"+ TextBox2.Text +"', etc)";
OleDbCommand cmd = new OleDbCommand(sSQL , Conn);
cmd.ExecuteNonQuery();


successivamente richiamare il caricamento della DataGrid


Un altro metodo, più veloce e più dinamico, è quello di gestire la nuova riga direttamente dalla DataGrid.


______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo morpheur87mi,

ho provato e mi da l'errore:
> richiede una oggetto Connection aperto e disponibile. Lo stato attuale della
connessione è chiuso.

Non è meglio inserire prima sul DGV e successivamente salvare?

Grazie
Domenico.

morpheus87mi Profilo | Junior Member

Mi scusi.. davo per scontato l'apertura della connessione. Basta inserire prima

Conn = new OleDbConnection(connStr);


Quindi viene

Conn = new OleDbConnection(connStr);
String sSQL = "INSERT INTO tabella(campo1, campo2, etc) VALUES('"+ TextBox1.Text +"','"+ TextBox2.Text +"', etc)";
OleDbCommand cmd = new OleDbCommand(sSQL , Conn);
cmd.ExecuteNonQuery();

______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo morpheur87mi,

sono rammaricato presenta lo stesso errore.
Grazie
Domenico.

morpheus87mi Profilo | Junior Member

Conn = new OleDbConnection(connStr);
Conn.Open();
String sSQL = "INSERT INTO tabella(campo1, campo2, etc) VALUES('"+ TextBox1.Text +"','"+ TextBox2.Text +"', etc)";
OleDbCommand cmd = new OleDbCommand(sSQL , Conn);
cmd.ExecuteNonQuery();
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo morpheur87mi,

l'errore che presenta ora:
> Tipi di dati non corrispondentyi nell'espressione criterio <

Dove sono i campi 1, 2, 3, ho inserito le voci del Database Access che sono Voce, Mese, Data

Grazie
Domenico.

morpheus87mi Profilo | Junior Member

Semplice... nella VALUES bisogna usare gli apici solo se il tipo dato del campo è un Char altrimenti niente.

Ovvero se il tipo dato è Char usi la seguente

.. VALUES('"+ TextBox1.Text +"','"+ TextBox2.Text +"', etc)";

altrimenti

.. VALUES("+ TextBox1.Text +","+ TextBox2.Text +", etc)";


Ovviamente può essere anche misto
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo morpheur87mi,

eliminando gli apici, presenta l'errore:

> Nessun valore specificato per alcuni parametri necessari.

//String sSQL = "INSERT INTO tabella(Voce, Mese, Data) VALUES('" + Txt_Voce.Text + "','" + Txt_Mese.Text + "','" + Txt_Data.Text + "')";

String sSQL = "INSERT INTO tabella(Voce, Mese, Data) VALUES(" + Txt_Voce.Text + "," + Txt_Mese.Text + "," + Txt_Data.Text + ")";

Grazie e scusa
Domenico.

morpheus87mi Profilo | Junior Member

Sembrerebbe che qualche textbox sia vuota.
Dovresti verificare il valore della variabile sSql.
Usa magari una Console.WriteLine o MessageBox.Show
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo morpheur87mi,

ora funziona e funziona con gli apici. E' stata dura.
Il motivo non riesco a comprendere prima no ora si.
Mi scuso per il tempo che hai perso per l'aiuto.
Auguro di proseguire. Buona giornata
Domenico.

morpheus87mi Profilo | Junior Member

Ottimo :-)
Alla prossima.
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5