Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 5.175 pregleda

Najnovija ↓

Filtriranje podataka 31.05.2007. u 19:39 · pre 236 meseci #1
imam bazu u kojoj su neki podaci.baza je access 2003, a VS je 2005.

recimo htio bi filtrirati po 5 razlicitih parametara.

znaci na formi imam 5 textboxeva.

filtriranje kao takvo nije problem.

ono sto je problem je velik broj kombinacija.

znaci gleda se svaki textbox sa svakim.

1 popunjeni 1,2,3,4,5 5 kom.
2 popunjena 12,13,14,15,23,24,25,34,35,45 10 kom.
3 popunjena 123,124,125,134,135,145,234,235,245,345 10 kom.
4 popunjena 1234,1235,1245,1345,2345 5 kom.
5 popunjena 12345 1 kom.

ukupno 31 kombinacija. i svaku bi mi morali stavljati u uvjet.a sta recimo da imamo 10 textboxeva.nekoliko tisuca kombinacija.

pa me zanima, kako se to rjesava jednostavnije? znam da postoji neki nacin, ali ne znam kako.
Re: Filtriranje podataka 31.05.2007. u 19:52 · pre 236 meseci #2
Imas vise resenja :

1. Dinamicki generises sql (tj. uslove u where) upit i parametre za upit u zavisnosti od stanja txt boxova

2. Napravis npr. ovakav upit
Code:

SELECT [sifraIzdavaca]
      ,[nazivIzdavaca]
      ,[adresaIzdavaca]
      ,[mestoIzdavaca]
      ,[telefonIzdavaca]
      ,[email]
 FROM [Izdavac]
WHERE 
sifraIzdavaca = ( case @sifraIzdavaca when -1 then sifraIzdavaca else @sifraIzdavaca end)
AND nazivIzdavaca LIKE ( case @nazivIzdavaca when '' then nazivIzdavaca else @nazivIzdavaca end)
ORDER BY nazivIzdavaca


i dodelis parametrima neku default vrednost npr ovde je -1 i "" mada moze biti koju hoces i ako je vrednost u txt boxu razlicita od "" tada popunis vrednost parametra inace okidas upit sa default vrednosti parametra. Samo pazi da default ne moze da bude neka vrednost koju ces stvarno jednom da trazis :) Ne znam da li Access podrzava ovakve konstrukcije upita... proveri.
Pozdrav
Potpis
RTFM
Re: Filtriranje podataka 31.05.2007. u 21:08 · pre 236 meseci #3
puno hvala, isprobat cu.jel ovo pod 1 drugi nacin ili je sve skupa?
ako je posebno jel mozes dati primjer i za ovo prvo?
Re: Filtriranje podataka 01.06.2007. u 19:34 · pre 236 meseci #4
Da, to su posebna resenja...
Za resenje pod 1 ... to je malo komplikovanije resenje, treba da prodjes kroz kolekciju txt boxova na formi ili nekom panelu, usercontroli cemu vec stoje txt boxovi i proveravas da li je txt box.Text !="" ako jeste kreiras parametar (ali moras negde imati i tip podatka za tu kolonu u bazi - ovo resenje je primenljivije ako imas neki framework sa kojim radis...) nakalemis na tvoj sql u where klauzuli uslov npr.
Code:
sifraIzdavaca=@sifraIzdavaca

na koju kolonu iz tabele ti se odnosi txt box, postavis vrednost parametra, parametar dodas u kolekciju parametara command objekta i okines upit :)
Potpis
RTFM
Re: Filtriranje podataka 09.06.2007. u 23:23 · pre 236 meseci #6
ovo radi samo sa sql serverom.
za access izbaci

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Data.OleDb.OleDbException: IErrorInfo.GetDescription failed with E_FAIL(0x80004005).
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Auti.Form1.Button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\Marko\My Documents\Visual Studio 2005\Projects\Auti\Auti\Form1.vb:line 15
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Re: Filtriranje podataka 10.06.2007. u 10:25 · pre 236 meseci #7
Da izgleda da ne radi za Access, access ne podrzava when, napomenuo sam ti to u prvom postu da moguce da nece raditi. Da ti napomenem jos - ako imas NULL vrednosti polja po kojima filtriras podatke tada ce da poredi ovako-da li je null=null sto vraca false, tako da pripazis na to.
Pozdrav
Potpis
RTFM
Re: Filtriranje podataka 10.06.2007. u 13:10 · pre 236 meseci #8
a jel postoji šta drugo (umjesto when) da se može koristiti sa access-om na isti način*
Re: Filtriranje podataka 07.09.2007. u 20:02 · pre 233 meseca #10
Citat:
aleksandarpopov: Imas vise resenja :

1. Dinamicki generises sql (tj. uslove u where) upit i parametre za upit u zavisnosti od stanja txt boxova

2. Napravis npr. ovakav upit
Code:

SELECT [sifraIzdavaca]
      ,[nazivIzdavaca]
      ,[adresaIzdavaca]
      ,[mestoIzdavaca]
      ,[telefonIzdavaca]
      ,[email]
 FROM [Izdavac]
WHERE 
sifraIzdavaca = ( case @sifraIzdavaca when -1 then sifraIzdavaca else @sifraIzdavaca end)
AND nazivIzdavaca LIKE ( case @nazivIzdavaca when '' then nazivIzdavaca else @nazivIzdavaca end)
ORDER BY nazivIzdavaca


i dodelis parametrima neku default vrednost npr ovde je -1 i "" mada moze biti koju hoces i ako je vrednost u txt boxu razlicita od "" tada popunis vrednost parametra inace okidas upit sa default vrednosti parametra. Samo pazi da default ne moze da bude neka vrednost koju ces stvarno jednom da trazis :) Ne znam da li Access podrzava ovakve konstrukcije upita... proveri.
Pozdrav


a sta ako imamo i datum, pa moramo filtrirati između dva datuma i jos po necem drugom?
Re: Filtriranje podataka 08.09.2007. u 12:10 · pre 233 meseca #11
sve je rijeseno, sad se pojavio jedan novi problem, a to je da imam dva radiobuttona.
i u ovisnosti selekcije, tako mi filtrira.
kako rijesiti pomocu dva radiobuttona?
Re: Filtriranje podataka 08.09.2007. u 17:21 · pre 233 meseca #12
realizirano like (case '" + radioButton1.Checked + "' when '" + false + "' then realizirano else '" + radioButton1.Checked + "' end) and realizirano (case '" + radioButton2.Checked + "' when '" + false + "' then realizirano when '" + true + "' then ovdje else '" + radioButton2.Checked + "' end)

ovo sve radi osim ovog drugog radiobuttona, kako mu reci da ako je oznaceno da ispise ne realizirane.
sta staviti umjesto "ovdje"?
treba mu reci realizirano=false.
ali javi gresku.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme