[MS Access] Anzeigen und Editieren von Tabellen mit Hilfe von Unterformularen

  • Entwurf -> Unterformular-Element in Formular ziehen
  • Im Assistenten alle relevanten Spalten der verknüpften Tabellen einfügen, es muss eine Spalte vorhanden sein, die eine Beziehung zum akt. Datensatz des Elternformulars hat
  • Auswahltyp „Unterformular/-bericht“ -> im Entwurfsmodus mit der Maus knapp links neben das Unterformular klicken, sodass ein Auswahlrahmen um das Unterformular entsteht sowie ein großes schwarzes Auswahlkästchen an der linken oberen Ecke zu sehen ist
  • Reiter Daten:
    Herkunftsobjekt: „Name-Unterformular“
    Verknüpfen nach: Spalte im Elternformular
    Verknüpfen von: Spalte im Unterformular
  • Auswahltyp „Formular“ -> im Entwurfsmodus mit der Maus in die linke obere Ecke des Unterformulare klicken, sodass ein kleines schwarzes Kästchen innerhalb der linken oberen Ecke entsteht
  • Reiter Format:
    Standardansicht: Datenblatt
    Formularansicht zulassen: nein
    PivotTable-Ansicht zulassen: nein
    PivotChart-Ansicht zulassen: nein
    Layoutansicht zulassen: nein
  • Reiter Daten:
    Datensatzquelle: SELECT -> kann angepasst werden, Achtung: Evtl werden, wenn die Spalten-Verknüpfungen zum Datensatz des Elternformulars fehlen, die Einstellungen unter 3.1. zurückgesetzt
    Dateneingabe, Anfügen, Löschen, Bearbeiten, Filtern von Daten kann eingestellt werden
  • Anzeigeeinstellungen in der Formularansicht
  • Spalten können in der Formularansicht des Elternformulars ein- und ausgeblendet sowie sortiert werden, diese Einstellungen können auch abgespeichert werden

[C#][OleDB] Daten aus MSAccess in einem DataGridView darstellen

string sOleConnStr = string.Empty;
string sMDBFile = @"c:\Test.mdb";
string sUser = "user";
string sPassword = "password";
string sSQL = "SELECT * FROM table";

if (sMDBFile.Contains(".mdb"))
{
    sOleConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sMDBFile + ";User ID=" + sUser + ";Jet OLEDB:Database Password=" + sPassword;
}
else
    if (sMDBFile.Contains(".accdb"))
    {
        sOleConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sMDBFile + ";User ID=" + sUser + ";Jet OLEDB:Database Password=" + sPassword;
    }

if (string.IsNullOrEmpty(sOleConnStr))
{
    MessageBox.Show("Sie haben eine nicht unterstützte MS Access Datenbankdatei ausgewählt.", AssemblyInfo.AssemblyProduct, MessageBoxButtons.OK, MessageBoxIcon.Warning);
    return;
}

OleDbConnection olecon = null;
OleDbDataReader olereader = null;

try
{
    olecon = new OleDbConnection(sOleConnStr);
    olecon.Open();

    OleDbCommand cmd = new OleDbCommand(sSQL, olecon);
    olereader = cmd.ExecuteReader();

    BindingSource bSource = new BindingSource();
    bSource.DataSource = olereader;

    // Datagridview auf einem Formular zum anzeigen der Daten
    dgvData.DataSource = bSource;
}
catch (Exception eole)
{
    MessageBox.Show(eole.Message, AssemblyInfo.AssemblyProduct, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
    // aufräumen
    if (olereader != null) olereader.Close();
    if (olecon != null) olecon.Close();
}

[OleDB] Tabellen einer MSAccess Datenbank auslesen

string sOleConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Test.accdb;User ID=;Jet OLEDB:Database Password=";

OleDbConnection olecon = new OleDbConnection(sOleConnStr);
olecon.Open();

DataTable dbSchemaTable = olecon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

foreach (DataRow row in dbSchemaTable.Rows)
{
    Console.WriteLine(row["TABLE_NAME"].ToString());
}