[ zorandon @ 25.10.2010. 20:50 ] @
Pozdrav,


Molim za malu pomoć! Naime imam reportviewer u C# i sve radi normalno što se tiče podataka koje treba da izvuče iz tabele u bazi podataka. Međutim pokušao sam da dodam jedan txt.Box i button kako bi omogućio useru da može da filtrira podatke. Dakle, ako korisnik ukuca broj narudžbe 223 da mu izbaci samo podatke vezane za tu narudžbu. Sve što sam uspio nakon što sam dodao txt.box i button jeste poruku o grešci koja me izludi: No overload for metod FILL takes 2 arguments.

Molim Vas za pomoć, HITNO!!!!
[ Mihajlo Cvetanović @ 25.10.2010. 21:17 ] @
Koliko argumenata ima metoda FILL? Kladim se da nema 2.
[ zorandon @ 25.10.2010. 21:35 ] @
Ovaj dio koda mi je u dijelu za button1
private void button1_Click(object sender, EventArgs e)
{

this.narudzbe1TableAdapter.Fill(this.stampa.narudzbe1);

this.reportViewer1.RefreshReport();
}

Sa ovim kodom radi, ali kad zamjenim gornji kod ovim ispod:

private void button1_Click(object sender, EventArgs e)
{

this.narudzbe1TableAdapter.Fill(this.stampa.narudzbe1, textBox1.Text);

this.reportViewer1.RefreshReport();
}

Dobijem poruku No overload.....

Ovo me izluđuje dva dana.
[ Mihajlo Cvetanović @ 25.10.2010. 21:54 ] @
Prva stvar, da li u poruci greške piše FILL ili Fill? Moraš biti precizan oko tih stvari. Verovatno je Fill, ali ako je FILL, onda imamo neki čudniji problem.

Druga stvar, metoda Fill očigledno ima jedan parametar, a ne dva kao što u drugom primeru pokušavaš da je pozivaš. Metodu Fill nisi prikazao, pa ne znamo šta se dešava, ali kompajler ne laže. Kompajler vidi metodu Fill, i vidi da ima jedan parametar, i zato pozivanje metode Fill sa dva parametra proizvodi grešku.
[ zorandon @ 25.10.2010. 22:05 ] @
Pardon, napravio sam grešku prilikom kucanja. prilikom greške izbacuje "fill".

Da li si mislio na ovaj dio koda?

public virtual int Fill(stampa.narudzbeDataTable dataTable) {
this.Adapter.SelectCommand = this.CommandCollection[0];
if ((this.ClearBeforeFill == true)) {
dataTable.Clear();
}
int returnValue = this.Adapter.Fill(dataTable);
return returnValue;
}

Ako nije to molim te da mi objasniš gdje to da provjerim jer više ne mogu da se snađem!
[ Mihajlo Cvetanović @ 25.10.2010. 23:10 ] @
Okej sve je jasno, i očigledno, još samo da se i tebi upali sijalica. Rekao si da sve radi kada metodu Fill pozivaš ovako:

this.narudzbe1TableAdapter.Fill(this.stampa.narudzbe1);

ali da se javlja greška u kompajliranju kada metodu Fill pozivaš ovako:

this.narudzbe1TableAdapter.Fill(this.stampa.narudzbe1, textBox1.Text);

Da li primećuješ da u drugom slučaju metodu Fill pozivaš sa dva parametra? Prvi parametar je this.stampa.narudzbe1, a drugi parametar je textBox1.Text. E pa, metoda Fill koju si naveo prima samo jedan parametar, stampa.narudzbeDataTable dataTable, i ne može da se poziva sa dodatnim string parametrom. Prosto ne može, i kompajler ti to javlja. To je objašnjenje za tvoje pitanje "šta se to dešava". Doduše ti i nisi postavio nikakvo pitanje, pa sam ja morao da pretpostavim koje je pitanje, da bih ti dao nekakav odgovor.

Možda tvoje pitanje u stvari glasi "kako da ga nateram da radi ono što ja hoću"? Ja nemam mnogo iskustva sa bazama, ali evo da probam:

Sad sam malo gledao help, izgleda da se to rešava u wizardu. Možda moraš da napraviš novu Fill metodu, koja bi se recimo zvala FillByOrder, i ta nova metoda bi trebalo da ima dva parametra, jedan DataTable i jedan string. I onda tu metodu koristiš umesto ove trenutne metode Fill.

Počevši od ove stranice ima dosta uputstava kako se radi sa bazom, pa pogledaj: http://msdn.microsoft.com/en-u...ary/ms171923%28v=VS.90%29.aspx
[ sallle @ 04.11.2010. 01:29 ] @
tom adapteru treba da promenis properti selectcommand (koji opet ima properti : commandtext).
i tu treba da upises upit koji ce tebi da radi posao (sa where uslovom).

Posto si laik mozes mozda ovako nesto odradis (daleko je od optimalnog algoritma, al je optimalno za objasniti):

private void button1_Click(object sender, EventArgs e)
{

this.narudzbe1TableAdapter.Fill(this.stampa.narudzbe1);

int k =-1;
try
{
k = Convert.ToInt32(textBox1.Text);
}
if (k>0)
{
foreach (DataRow dr in this.stampa.narudzbe1.Rows)
{

if ((int)dr["broj_narudzbenice"]!=k) //ovde uneses naziv tvoje kolone
dr.Delete()
}
this.stampa.narudzbe1.AcceptChanges();//mozda ce ok da radi i bez ovoga
}

this.reportViewer1.RefreshReport();
}