[C#] Access DATE != DataGridView DATE ? + Daten ändern, aber wie?

Hier mal ein Versuch von mir:

Code:
public void Datenbankupdate(DataTable meineDataTable, OleDbConnection sqlconn)
{

OleDbDataAdapter dataAdapter =  new OleDbDataAdapter(SQLQuery, sqlconn);
OleDbCommandBuilder ComBuilder = new OleDbCommandBuilder(dataAdapter);
dataAdapter.Update(meineDataTable);

}

ABER VORSICHT!! Das habe ich gerade aus dem Kopf hier getippt. NICHT GETESTET Ausserdem Programmiere ich normalerweise VB.NET und habe das jetzt einfach mal an C# angepasst. Überprüf den Code bitte, bevor du ihn nutzt.
 
aber genau da lieght dochdas problem.... du instaziirst doch hier einen neuen dataadapter, aber ich ich muss doch die update methode auf den bereits instanziierten adapter anwenden..... oder lieg ich da falsch?
 
Wieso musst du das? Du kannst auch einen anderen nehmen. Aber du kannst auch der Routine deinen DataAdapter mitgeben, wenn dir das besser gefällt. War ja nur ein Beispiel.
 
ich glaube das problem ist das ich das nicht ganz nachvollziehen kann.... ich denke mir fehlt da noch n bisschen was um nach zu vollziehen wie das geht, aber ich versuchs jetzt mal mit deinem codebeispiel.
obwohl sich da ne frage auftut.. WO würdest du diese metode aufrufen? und WO nimmst du die argumente her die du übergibst?

könntest du das nicht mal in meinen code einbauen und farbig markieren?... *Lieb Guck*
 
Hallo

Ich kann leider kein C#.
Aber vielleicht kannst Du Mein Beispiel umsetzten.
Code:
Imports System.Data.OleDb

Public Class Form1
    Private dt As New DataTable
    Private da As OleDbDataAdapter
    Private ds As New DataSet
    Private bs As New BindingSource

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb;"
        Dim Con As New OleDbConnection(ConStr)

        ds.Tables.Add(dt)

        da = New OleDbDataAdapter("SELECT * FROM Tabelle1", Con)

        da.Fill(dt)

        Dim cb As New OleDbCommandBuilder(da)

        bs.DataSource = dt

        Me.DataGridView1.DataSource = bs
    End Sub

    Private Sub cmdSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSpeichern.Click
        bs.EndEdit()
        da.Update(ds.Tables(0))
    End Sub
End Class
 
Ich habe diesen VB code nun in C# code Generiert.

Meine Vorm sieht nun so aus

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SMS_Archiv
{
    public partial class f_Auslesen : Form
    {

        #region Deklarationen
        OleDbConnection database = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + f_Hauptmenue._DatenbankPfad);
        OleDbCommand SQLQuery = new OleDbCommand();

        private DataTable data = new DataTable();
        private OleDbDataAdapter dataAdapter = null;
        private DataSet ds = new DataSet();
        private BindingSource bs = new BindingSource();
        private string _queryString;
        #endregion

        public f_Auslesen()
        {
            InitializeComponent();
        }

       

        private void f_Auslesen_Load(object sender, EventArgs e)
        {
            _queryString = "SELECT * FROM SMS ORDER BY SMS_Datum, SMS_Zeit ASC";
            loadDataGrid(_queryString);
        }

        private void b_Close_Click(object sender, EventArgs e)
        {
            DialogResult result;
            result = MessageBox.Show(this, "Sollen alle Änderungen gespeichert werden?", "Schließen/Speichern", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {        
                bs.EndEdit();
                dataAdapter.Update(data);
                this.Close();
            }
            else if (result == DialogResult.No)
            {
                bs.EndEdit();
                this.Close();
            }            
        }

        private void f_Auslesen_FormClosing(object sender, FormClosingEventArgs e)
        {
            database.Close();
            f_Hauptmenue.Auslesen_Offen = false;
        }

        #region DataGridView Laden
        public void loadDataGrid(string sqlQueryString)
        {
            DataTable data = null;
            dataGridView1.DataSource = null;
            SQLQuery.Connection = null;
            
            dataGridView1.Columns.Clear(); // <-- clear columns
            //---------------------------------
            SQLQuery.CommandText = sqlQueryString;
            SQLQuery.Connection = database;
            data = new DataTable();
            dataAdapter = new OleDbDataAdapter(SQLQuery);
            dataAdapter.Fill(data);
            OleDbCommandBuilder cb = new OleDbCommandBuilder(dataAdapter);
            bs.DataSource = data;
            this.dataGridView1.DataSource = bs;
            dataGridView1.DataSource = data;
            dataGridView1.AllowUserToAddRows = false; // remove the null line
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.ReadOnly = false;
            dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
            dataGridView1.Columns["ID"].Visible = false;
            dataGridView1.Columns["SMS_Text"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridView1.Columns["SMS_Text"].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            dataGridView1.Columns["SMS_Zeit"].DefaultCellStyle.Format = "HH:mm";
            dataGridView1.Columns["SMS_Zeit"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
            dataGridView1.Columns["SMS_Datum"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
            dataGridView1.RowHeadersVisible = false;
        }
        #endregion
    }
}


doch wenn ich in der zeite den text ändere, und dann auf den button klicke und auf JA speichern, dann tut sich immernoch nichts, also die änderungen sind nicht da =(
 
Geh doch mal mittels F8 durch den entsprechenden Code und schau dir an was er macht. So kannst du auch Inhalte von Variablen prüfen.

Ausserdem solltest du dich mit der Materie etwas mehr auseinander setzen. Wir können dir hier auch nicht alles 1:1 vorkauen. Musst du auch schon mal selbst ein bisschen stöbern. Z.B. MSDN eignet sich perfekt für Syntax etc.
 
naja das problem ist, das mein visual studio (nicht mein pc) hier auf diedem pc nicht richtig funktioniert, und ich somit leider die datenbank nicht per assistenten einbinden kann. deswegen auch so umständlich
 
Ich persönlich binde die DBs auch immer Quellcode ein. Finde ich persönlich besser. Aber das kann ja jeder machen wie er will.

Aber nimm dir doch einfach mal die MSDN und guck dir da die beispiele zum DataAdapter.Update an. Vielleicht hilft dir das weiter.
 
Zurück