zasto ne upisuje u bazu mesece,dane i sate dobro?

6

zasto ne upisuje u bazu mesece,dane i sate dobro?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Prijatelju... mislim da je rad sa bazama za tebe u ovom momentu preveliki zalogaj.
Nažalost, nisi jasno napisao šta je tačno problem pa ću probati da pogađam.
Na osnovu koda bi rekao da možeš da filtriraš ili samo po korisniku ili samo po događaju jer si napravio da postaviš nov DataView sa samo jednim filterom kad god se jedan od ta dva podatka promeni. Nisi napravio tako da koristiš oba podatka odjednom.
Što se tiče datuma, imaš grešku u queryju. Tabela Tomislav ne sadrži polja korisnici.korisnik i dogadjaji.dogadjaj. I čak i kad bi napisao pravilno taj query, onda bi filtrirao samo po datumu, a korisnika i događaj bi ignorisao.

Ukratko, predlažem ti da lepo kreneš po nekom tutorijalu za rad sa bazama i da sa razumevanjem, polako ideš lekciju po lekciju. Ovo što ti radiš je sve navrat-nanos, ima mnogo grešaka, naučićeš sve da radiš pogrešno.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

Napisano: 08 Okt 2014 15:53

Citat:Nisi napravio tako da koristiš oba podatka odjednom.
Pokusao sam ali nisam nasao pravo resenje.
Pa da, treba da filtriram po datumu, da to bude kad ukucam raspon da mi izbaci.
Citat:
Što se tiče datuma, imaš grešku u queryju. Tabela Tomislav ne sadrži polja korisnici.korisnik i dogadjaji.dogadjaj.

a da da, vidim sad sta sam uradio, samo sam izmenio postojeci kod, to treba da sadrzi iz svoje tabele.
ALi to odjednom da koristi sve, nisam nasao kod. A i mislim da umesto RowFilter sto sam koristio za tekxt, mozda bolje preko sql, tj lakse.

Dopuna: 08 Okt 2014 15:58

 string query = "select korisnici.korisnik, dogadjaji.dogadjaj, Datum from korisnici, dogadjaji, Tomislav where Datum BETWEEN ? AND ?";
ovako ide query, nisam dobro napisao bio.

A sto se tice text boxova promenio sam u
 private void textBox3_TextChanged(object sender, EventArgs e)      {          if (textBox3.Text == string.Empty)          {              bs.RemoveFilter();          }          else          {              bs.Filter = string.Format("dogadjaj LIKE '*{0}*'", textBox3.Text);          }      }      private void textBox1_TextChanged(object sender, EventArgs e)      {          if (textBox1.Text == string.Empty)          {              bs.RemoveFilter();          }          else          {              bs.Filter = string.Format("korisnik LIKE '*{0}*'", textBox1.Text);          }      }

i to sad radi zasebno, sad samo ih treba spojiti nekako...

Dopuna: 08 Okt 2014 17:59

Ja sam recimo radio neki projekat u vb6 i imao sam formu gde trazi proizvod i PDV i odradio mi je posao kako sam zeleo, tj trazi i jedno i drugo

Option Explicit Dim str1 As String Private Sub Command1_Click() Set DataEnvironment1.rsCommand1.DataSource = Adodc1 DataReport1.Show End Sub Private Sub Form_Load() Dim str2 As String Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=baza.mdb;Persist Security Info=False" str2 = "SELECT Naziv, PDV, Cena from PROIZVOD where Naziv like'%" & _         Text1.Text & "%' and PDV like '%" & Text2.Text & _         "%'  " Adodc1.RecordSource = str2 Adodc1.Refresh End Sub Private Sub Text1_Change() str1 = "SELECT Naziv, PDV, Cena from PROIZVOD where Naziv like'%" & _         Text1.Text & "%' and PDV like '%" & Text2.Text & _         "%'  "         Adodc1.RecordSource = str1 Adodc1.Refresh End Sub Private Sub Text2_Change() str1 = "SELECT Naziv, PDV, Cena from PROIZVOD where Naziv like'%" & _         Text1.Text & "%' and PDV like '%" & Text2.Text & _         "%'  "         Adodc1.RecordSource = str1 Adodc1.Refresh End Sub
ali ne znam sad to u c# Very Happy



offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Tomislave, nije tebi C# toliki problem koliki su ti problem baze podataka.

Ovaj primer u VB6 radi samo sa jednom tabelom, a sa jednom tabelom se koliko toliko snalaziš i u C#. Problem nastaje kada radiš sa više tabela, i prvenstveno je problem u tome što ti definitivno ne razumeš suštinu rada sa više različitih tabela i spojeva između njih. Tako nešto moraš prvo da razumeš, a programiranje toga je rutinska stvar. Na kraju, to moraš sam da savladaš. Uzmi lepo uradi kako ti Srki kaže i savladaj to, a onda kreni u izradu projekata. Videćeš, biće mnogo jednostavnije.

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

moram prvo ovo da odradim Very Happy pa cu tek onda da gledam sta i kako Very Happy znam da je sitnica, samo ne mogu sintaticki da se skontam

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Napisano: 08 Okt 2014 18:29

Sintatički? Misliš sintaksno? To je najmanji problem. Wink I ne, nije sintaksa problem. Problem je u tome što ti zapravo nemaš pojma šta treba da uradiš.

Šta zapravo treba da uradiš? Da izdvojiš određene akcije prema datumima. Gde se nalaze te akcije? U spoju tabela! Dakle, spoj tabela možeš da posmatraš kao najobičniju tabelu. Sada kada je spoj tabela jedna najobičnija tabela, kako izdvojiti određene redove iz najobičnije tabele? Jednostavno.

Hajmo jedan primer:  SELECT Tomislav.korisnik_ID, Tomislav.dogadjaj_ID, Tomislav.Datum, dogadjaji.dogadjaj, korisnici.korisnik FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID; Valjda je jasno šta je ovo? Da, to je spoj tabela. Ako to možeš da posmatraš kao tabelu, kako ćeš sada to tabelu koristiti kao izvornu tabelu za filtriranje? Ovako: SELECT * FROM (SELECT Tomislav.korisnik_ID, Tomislav.dogadjaj_ID, Tomislav.Datum, dogadjaji.dogadjaj, korisnici.korisnik FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID) WHERE Datum BETWEEN... E vidiš, to su oni ugnježdeni upiti koje sam ja pominjao još odavno. Da si pogledao malo kako se to radi ovo bi bio mačiji kašalj.

Dopuna: 08 Okt 2014 18:30

I još jednom, nema ovo veze sa C#, ovo je čist SQL... Wink

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

Pa ja sam tako i radio, ali prosto to ne radi. Nisam bas toliko lud da ne znam da mi je to tabela, to razumem i znam da mi treba where datum between vrednosti pickera povezanim sa AND, ali fora je sto rade posebno Very Happy a ne zajj, nista vise..
i uzeo sam bez id, jer mi oni ne trebaju u prikazu
SELECT korisnici.korisnik,dogadjaji.dogadjaj,Tomislav.Datum FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID;

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Ukratko... treba da dodaješ WHERE uslove. Kad kreneš s proverom WHERE uslovi su prazni... ako je u polju korisnik upisano nešto, dodaš korisnik LIKE *upisan text*, zatim pogledaš da li je upisan događaj i ako jeste dodaš još i dogadjaj LIKE *upisan text*. Na kraju dodaš još i uslov za vreme i to je to. Sve uslove povežeš sa AND jer verovatno to želiš. Tako ćeš dobiti komandu koja će ti iz baze vratiti samo podatke koji ispunjavaju sve zadate uslove i samo treba da ih prikažeš u tabeli.

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

SELECT * FROM (SELECT korisnici.korisnik,dogadjaji.dogadjaj,Tomislav.Datum FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID) WHERE korisnik LIKE  '%" + textBox1.Text AND dogadjaj LIKE '%"+textBox2.Text AND Datum  BETWEEN datapicker1.value AND datapicker2.value)
?

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Pa jel izgleda tebi da valja? Čak i text colouring (iako ne baš sasvim načno ovde, VS sigurno prikazuje tačno) prikazuje da ne valja. Wink

offline
  • Huskar
  • Pridružio: 31 Maj 2008
  • Poruke: 885

Napisano: 08 Okt 2014 23:21

a vise sam napamet hteo, nisam bio vs Very Happy

"SELECT * FROM (SELECT korisnici.korisnik,dogadjaji.dogadjaj,Tomislav.Datum FROM dogadjaji INNER JOIN (korisnici INNER JOIN Tomislav ON korisnici.ID = Tomislav.korisnik_ID) ON dogadjaji.ID = Tomislav.dogadjaj_ID) WHERE korisnik like '%" + textBox1.Text + "%' AND dogadjaj like '%" + textBox3.Text + "%'"

Dopuna: 10 Okt 2014 2:21

Evo novosti, koga zanima Very Happy

kod event-a za textChanged uradio sam ovako

private void textBox1_TextChanged(object sender, EventArgs e)      {                            BindingSource bs = new BindingSource();                  bs.DataSource = dataGridView1.DataSource;                  bs.Filter = "korisnik like '%" + textBox1.Text + "%' AND dogadjaj like '%" + textBox3.Text + "%'";                  dataGridView1.DataSource = bs;                    }      private void textBox3_TextChanged(object sender, EventArgs e)      {                              BindingSource bs = new BindingSource();              bs.DataSource = dataGridView1.DataSource;              bs.Filter = "korisnik like '%" + textBox1.Text + "%' AND dogadjaj like '%" + textBox3.Text + "%'";              dataGridView1.DataSource = bs;                }

I to sad radi, dok sam kod dugmeta uradio

 private void button1_Click(object sender, EventArgs e)      {          if(dateTimePicker1.Value>dateTimePicker2.Value)          {              MessageBox.Show("Takav opseg nije moguc. Datum Od mora biti veci od datuma Do.", "Opseg datuma", MessageBoxButtons.OK, MessageBoxIcon.Error);                  }          else{                    string query = "select korisnik, dogadjaj, Datum from korisnici, dogadjaji, Tomislav where Datum BETWEEN ? AND ? AND korisnik like '%" + textBox1.Text + "%' AND dogadjaj like '%" + textBox3.Text + "%' "; OleDbCommand cmd = new OleDbCommand(query, connection); cmd.Parameters.AddWithValue("SDate", DbType.DateTime).Value = dateTimePicker1.Value; cmd.Parameters.AddWithValue("EDate", DbType.DateTime).Value = dateTimePicker2.Value; DataSet ds = new DataSet(); sda= new OleDbDataAdapter(); connection.Open(); sda.SelectCommand = cmd; sda.Fill(ds, "Tomislav"); dataGridView1.DataSource = ds.Tables[0]; connection.Close();      }   }

I sad kada odaberem ime i dogadjaj, i recimo stavim opseg da mi izbaci 3 datuma(tako podesim od tih sto je izbacio prvi filtriranju sa textBoxova), on kao da je dodao jos neke, mislim ima ih vise nego sto je bilo kada sam filtrirao po textBox -ovima. Evo ima slika koja je po koracima(1,2,3)

Ko je trenutno na forumu
 

Ukupno su 736 korisnika na forumu :: 8 registrovanih, 1 sakriven i 727 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: cikadeda, Koridor, Marko Marković, marsovac 2, milenko crazy north, Milos82, Mixelotti, slonic_tonic