InsertCommand - Fehler

26/09/2007 - 10:48 von Joachim Dietz | Report spam
Hallo @all,

Ich hàtte da gerne mal ein Problem:

Ich bin gerade dabei mich in C# einzuarbeiten und bin da auf ein Problem
gestoßen, daß mir ziemlich Kopfschmerzen bereitet.

Ich erstelle eine OleDbConnection, einen OleDbDataAdapter und eine DataTable
und lasse diese in einen DataGrid anzeigen. Das funzt auch prima, aber nur
bei einer kleinen Tabelle.
weiterhin lasse ich die InsertCommands usw über den OleDbCommandBuilder
erzeugen.

Bei einer Tabelle mit 7 Spalten ist das auch kein Problem, jedoch wenn ich
die Tabelle im selben SourceCode durch eine Tabelle mit 72 Spalten ersetze,
wird eine Exception geschmissen, mit der meldung, daß das InsertCommand einen
Syntaxfehler aufweist.

Was habe ich falsch gemacht? Ich verwende C#2005 auf XP bzw. Vista Ultimate.

Hier mal ein Blick in meinen Code:
"public partial class Form1 : Form
{
OleDbConnection gCNN = new OleDbConnection();
OleDbDataAdapter gDA = new OleDbDataAdapter();
DataTable gTBL = new DataTable();

public void CreatDataSource()
{
OleDbDataAdapter da = new OleDbDataAdapter("Select * from
Adresse", gCNN);
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
//da.ContinueUpdateOnError = true;
gDA = da;


}

public void BindTable()
{
gTBL = new DataTable("Tabelle");
gDA.Fill(gTBL);
}

public Form1()
{


InitializeComponent();
// Connection erzeugen und herstellen
string strConn = "Provider=Microsoft.Jet.OleDb.4.0" +
";Data Source=D:/C#
Entwicklung/Tests/DBTest/TestDB.mdb" +
";User Id=Admin";
OleDbConnection cnn = new OleDbConnection(strConn);
cnn = new OleDbConnection(strConn);
gCNN = cnn;
// * Der DataAdapter und seine Eigenschaften
// * Der CommandBuilder und seine Auspràgungen

CreatDataSource();

OleDbCommandBuilder cb = new OleDbCommandBuilder(gDA);
cb.DataAdapter = gDA;
cb.ConflictOption = ConflictOption.CompareAllSearchableValues;

BindTable();

// * Dem DataGrid einen DataSource zuweisen
fill_Grid(gTBL);

// * Speichern der Änderungen im DataAdapter
gDA.Update((DataTable)Grid1.DataSource);


}

private void fill_Grid(DataTable tab)
{
Grid1.DataSource = tab;

Grid1.Anchor = AnchorStyles.Top;
//Grid1.Columns["lfd_Nr"].Visible = false;
//Grid1.Width = 1000;
//Grid1.Height = 500;
}

private void cmdConfirm_Click(object sender, EventArgs e)
{
gDA.Update((DataTable)Grid1.DataSource);
MessageBox.Show("Die Änderungen wurden erfolgreich übernommen",
"Daten Speichern",
MessageBoxButtons.OK, MessageBoxIcon.Information);

}

private void cmdReload_Click(object sender, EventArgs e)
{
CreatDataSource();
BindTable();
fill_Grid(gTBL);
}





}"
 

Lesen sie die antworten

#1 Elmar Boye
26/09/2007 - 12:25 | Warnen spam
Hallo Joachim,

Joachim Dietz schrieb ...
Ich erstelle eine OleDbConnection, einen OleDbDataAdapter und eine
DataTable und lasse diese in einen DataGrid anzeigen. Das funzt auch
prima, aber nur bei einer kleinen Tabelle.
weiterhin lasse ich die InsertCommands usw über den OleDbCommandBuilder
erzeugen.

Bei einer Tabelle mit 7 Spalten ist das auch kein Problem, jedoch wenn ich
die Tabelle im selben SourceCode durch eine Tabelle mit 72 Spalten
ersetze, wird eine Exception geschmissen, mit der meldung, daß das
InsertCommand einen Syntaxfehler aufweist.

// Connection erzeugen und herstellen
string strConn = "Provider=Microsoft.Jet.OleDb.4.0" +



Der Access/Jet Treiber erlaubt nur 99 AND Klauseln in einer Abfrage.
Die werden durch die optimistische Prüfung schnell überschritten.

Für eine mögliche Lösung siehe meine Antwort in:
http://groups.google.de/group/micro...55fbaef976

Gruss
Elmar

Ähnliche fragen