DataSet regenerieren

MAHIM

Grünschnabel
Hi Leute,

hab ein mehr oder minder großes Problem:
Eine DB (M$-SQL-Server) und ein ds(DataSet)!
Wenn man dieses erstellt hat(das ds) codet der Entwickler von
.net eine dataset.cs wo alle Spalten der Tabelle vorkommen,
nun hat sich diese erweitert und wenn ich das DataSet neu fülle:

Code:
DataSet name = new namespace.DataSet();
dbcon.fillDataset("SQL-String", name, "TableName");
///
public DataSet fillDataset(string strSQL, DataSet data,string strDataSetName)
{
	da = new OleDbDataAdapter(strSQL,conn);
	da.Fill(data,strDataSetName);  ///////HIER FLIEGE ICH RAUS////
	return data;
}
bekomm ich diese Exception:
System.ArgumentException: System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Convert.ToInt32(Object value)
at System.Data.Common.Int32Storage.Set(Int32 record, Object value)
at System.Data.DataColumn.set_Item(Int32 record, Object value)<> konnte nicht in der Gesamtmenge-Spalte gespeichert werden. Erwarteter Typ: Int32.
at System.Data.DataColumn.set_Item(Int32 record, Object value)
at System.Data.DataTable.NewRecordFromArray(Object[] value)
at System.Data.DataTable.LoadDataRow(Object[] values, Boolean fAcceptChanges)
at System.Data.Common.SchemaMapping.LoadDataRow(Boolean clearDataValues, Boolean acceptChanges)
at System.Data.Common.DbDataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
at aplBDE.CTA.DBconn.fillDataset(String strSQL, DataSet data, String strDataSetName) in d:\programmierung\internet\wwwroot\aplbde\cta\dbconn.cs:line 145
at aplBDE.PBK.PBK.doPalettenkarte() in d:\programmierung\internet\wwwroot\aplbde\pbk\pbk.cs:line 285
at aplBDE.PBK.PBK.viewTimer_Elapsed(Object sender, ElapsedEventArgs e) in d:\programmierung\internet\wwwroot\aplbde\pbk\pbk.cs:line 460


Lösungsvorschläge!?
Ich pers. habe keinen blassen Schimmer warum es plötzlich nichtmehr geht, hat schon funktioniert!
Danke im vorraus, MAHIM :(
 
Hi,

Code:
System.ArgumentException: System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
Wird u.a. ausgeloest wenn ein Leer-String in einen int konvertiert werden soll:
Code:
string a = "";
int b = int.Parse(a); // Exception
Das heißt fuer dich das du allen Eingabefelder die in einen int konvertiert werden, eine Art Default-Value geben muesstest (z.B. 0).
 
Guter ansatz

Guter Ansatz,
aber daran kanns nicht liegen.... in meiner DB gibt es aus Prinzip keine <null>'s und immer Standartwerte...
und int's verwende ich generell ungern, was aber nichts zur Sache tut!
Es geht hier übrigens um den DB-Zugriff für einen CR(=Crystal Report) einer BDE(=BetriebsDatenErfassung) da hängen ein paar €uros dran, bin ratlos *versteck*
Bin zwar 'nur' Lehrling, aber der einzige bei uns in der Firma der 'vernünftig' .NET kann ist nun für 2Monate nicht hier, der Rest der hier ist kann mir nicht helfen.... *heul*......
thx, MAHIM
 
Ups.. das mit den Eingabefeldern ist natuerlich Unsinn, schließlich fuellst du das DataSet ja erst aus der DB...

Kann es vielleicht sein das irgendwelche Datentypen des DataSets und der Datenbank verschieden sind? Hast du evtl. die Moeglichkeit das zu kontrollieren. Dies war jedenfalls bei mir meist der Grund wenn ich so eine Exception bekam.
 
...das DS ist vom Builder(der hat zugriff auf die DB) generiert.... die Feldnamen stimmen insofern sicher!
Aber die Tabelle ist erweitert worden, nur neue Spalten, und jetzt happerts beim füllen.....
 
Ich meinte ja auch nicht die Feldnamen sondern die Datentypen der neuen Spalten. Ob es da vielleicht Differenzen gibt. Ansonsten weiß ich auch nicht weiter.
Muesste mal meinen Kollegen fragen, aber der ist zur Zeit auch nicht da.
 
Danke für den Tipp.... Datentypen sind tatsächlich einige falsch, beruht auf einem Folgefehler ( zuerst wurde zum Testen eine 'Fake'Tabelle mit Daten errichtet um den CR zu machen, dann wurde eine View gemacht die Echtdaten ausspuckt! Der FAPBKStatus beispielsweise ist derzeit '0','1','5','6','7','8' oder '9', ist daher in der FakeView als INT gespeichert gewesen, ist in den Echtdaten aber ein Char(1) weil eine Erweiterung mit Stati 'a', 's' und 'i' vorgesehen ist! Gesamt sind es 6 Datentypen die ich jetzt gerade Händisch ausbessere.... SauArbeit! gibts keine Möglichkeit das DataSet gegen die DB neu aufbauen zu lassen[hat beim 'ersten' Mal so doll geklappt]?) Danke im Vorraus, MAHIM p.s. Tschuldigt Admins das ich in diesem Post kein einziges mal Cartrige Return Line Feed gmacht hab, ist so aber einfacher zu Schreiben! *g*
 
Zurück