none
Eingebundene Access Tabelle mit DataGridView1 kann nicht auf der Form aktiv bearbeitet werden RRS feed

  • Frage

  • Wenn ich auf der Form beim debuggen in der Access Tabelle etwas schreibe, speichert er es nicht in der Tabelle ab. Bei neustart des Programms ist die Tabelle wieder leer.

     

    public partial class Form1 : Form
      {
        private ADODB.Connection adoDBConnection;
        
        public SerialPort m_serielleSchnittStelle = null;
        Queue<String> m_listeDatenGelesen = new Queue<String>();
        public int zugriff = 1;
        public Form1()
        {
          string udlPfad;
    
          InitializeComponent();
          m_serielleSchnittStelle = new SerialPort();
          
          udlPfad = Application.ExecutablePath + "MDB_Scan.udl";
          udlPfad = udlPfad.Replace(".exe", ".udl");
          // adoDBConnection = new ADODB.Connection();
          // adoDBConnection.ConnectionString = "FILE NAME=" + udlPfad;  // "FILE NAME=" + udlPfad;
          // adoDBConnection.Provider = udlPfad;
          
          string sSql = "";
          sSql = "Select * from Tabelle1";
    
          OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Patrick\Desktop\Scan 1 - Kopie - Kopie (2)\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\Scan.mdb");
    
          con.Open();
    
          OleDbCommand cmd = new OleDbCommand(sSql, con);
          OleDbDataAdapter da = new OleDbDataAdapter(cmd);
          
          DataTable tmpTable = new DataTable();
          tmpTable.Locale = System.Globalization.CultureInfo.InvariantCulture;
          da.Fill(tmpTable);
    
          BindingSource tmpBindingSource = new BindingSource();
          tmpBindingSource.DataSource = tmpTable;
    
          dataGridView1.DataSource = tmpBindingSource;
    dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
    
    

    Dienstag, 17. Mai 2011 07:57

Antworten

  • ich hab mal etwas gespielt:

     namespace test_Update
    {
      public partial class Form1 : Form
      {
        public Form1()
        {
          InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          // TODO: Diese Codezeile lädt Daten in die Tabelle "testDataSet.wert". Sie können sie bei Bedarf verschieben oder entfernen.
          this.wertTableAdapter.Fill(this.testDataSet.wert);
    
        }
    
        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
          try
          {
            this.Validate();
            this.wertBindingSource.EndEdit();
            this.wertTableAdapter.Update(this.testDataSet.wert);
          }
          catch (System.Exception ex)
          {
            MessageBox.Show("Update failed");
          }
        }
      }
    }
    
    der update funktioniert, wenn ein neuer Wert angelegt wird!

    Dienstag, 17. Mai 2011 09:35

Alle Antworten

  • ich hatte das problem mit meinem DataGriew und meiner SQL Datenbank auch.

    ich konnt es dann lösen indem ich mir einen Button in die leiste gelegt habe und im Code dann ein "AdapterName".Update aufgerufen habe.

    grüsse

     

    Dienstag, 17. Mai 2011 08:50
  • Das muss bei meinem Programm ohne Buttons gehen, ist für einen Mobilen Barcode Scanner gedacht.
    Dienstag, 17. Mai 2011 08:54
  • naja, es gibt da ja noch irgendwelche events wie keyDown, ..... oder Validating, ...... vielleicht kannst da ja das Update einbinden.

     

    Dienstag, 17. Mai 2011 09:04
  • ne, das hab ich mir irgendwie anders vorgestellt :)
    Dienstag, 17. Mai 2011 09:20
  • und wie?
    Dienstag, 17. Mai 2011 09:21
  • ich hab mal etwas gespielt:

     namespace test_Update
    {
      public partial class Form1 : Form
      {
        public Form1()
        {
          InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          // TODO: Diese Codezeile lädt Daten in die Tabelle "testDataSet.wert". Sie können sie bei Bedarf verschieben oder entfernen.
          this.wertTableAdapter.Fill(this.testDataSet.wert);
    
        }
    
        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
          try
          {
            this.Validate();
            this.wertBindingSource.EndEdit();
            this.wertTableAdapter.Update(this.testDataSet.wert);
          }
          catch (System.Exception ex)
          {
            MessageBox.Show("Update failed");
          }
        }
      }
    }
    
    der update funktioniert, wenn ein neuer Wert angelegt wird!

    Dienstag, 17. Mai 2011 09:35