[ ismilovic @ 09.07.2005. 09:39 ] @
C"# (Builder) Upisivanje podataka u DataBase (InterBase)

Prelazim sa C++ na C# i lokalnih baza Paradox na InterBase.
Prva lekcija: Pokušavam prenijeti podatke iz lokalnih datoteka u IB, tako da sam napravio text datoteku sa podacima iz Paradox datoteke, a u C# je učitam u RichTexBox te je obrađujem ovim kodom:

private void AddData_Click(object sender, System.EventArgs e) {
DataModul DataModul = new DataModul(); // Napravit kopiju datamodula
DataModul.KpiProv.Active = false;

Borland.Data.Provider.BdpDataAdapter da = DataModul.KpiProv;
DataSet ds = DataModul.DM;
DataTable dt = DataModul.Kpi;
DataRow dr;

int n = 0;
foreach(String Line in TextDb.Lines){
n++;
dr = dt.NewRow();

int Start = 0;
// Kotistiti DataColumnCollection KPI table.
foreach(DataColumn dc in DataModul.Kpi.Columns){
int Pos = Line.IndexOf(";", Start);
string Value = Line.Substring(Start, Pos-Start);

if(dc.DataType == typeof(System.String))
dr[dc] = Value;

if(dc.DataType == typeof(System.Decimal))
dr[dc] = System.Convert.ToDecimal(Value);

if(dc.DataType == typeof(System.DateTime))
dr[dc] = System.Convert.ToDateTime(Value);

Start = Pos + 1;
}

dt.Rows.Add(dr);

if(n == 2) break; // za testiranje samo 2 retka
}
dt.AcceptChanges();
DataModul.KpiProv.Active = true;

// Kreirati privremenu DataSet variablu.
DataSet dsChanges;
// Ubaciti samo redove koji su mjenjani
dsChanges = ds.GetChanges(DataRowState.Modified);
// Kontrolirati DataSet na gresku
if(!dsChanges.HasErrors) {
// Ako nema greške obraditi sa BdpAdapterom da
// korištenim za kreiranje DataSet-a
int res = da.Update(dsChanges); // I OVO NE RADI ??????
}

Odustat.Focus();
}

Sa ovim kodom se "gledam" već sedam dana, POMAGAJTE.
[ nervozica @ 11.07.2005. 08:38 ] @
Citat:

int res = da.Update(dsChanges); // I OVO NE RADI ??????


da bi ovo radilo moras da kreiras
Borland.Data.Provider.BdpCommandBuilder = new Borland.Data.Provider.BdpCommandBuilder(da);
odmah nakon kreiranja DataAdaptera

[Ovu poruku je menjao nervozica dana 11.07.2005. u 09:39 GMT+1]
[ ismilovic @ 11.07.2005. 12:59 ] @
nervozica - hvala na trudu, ali nije pomoglo.

Dodatno pojašnjenje pitanja:
da (Data adapter) je definiran u posebnom modulu nazvanom DataModul - ne pitaj zašto jer ne znam; to mi je ostalo od c++Buildera.
u istom moduli su definirane i komande
da.KpiSelect, da.KpiUpdate, .... Cijeli modul je kreiran programski kao translacija C++Builder DataModul.dfm forme u novi C# jezik.
DataModul.cs je skup definicija tabli i komandi za seriju bivših Xxx.db datoteka.

Sada zapinje na

if(!dsChanges.HasErrors) {

sa porukom:

encountered unhandled exception class System.NullReferenceException
... a ja ga ne kapim