[ popmilan76 @ 19.05.2017. 21:14 ] @
Zanima me zasto izbacuje greska u sledecem kodu....

string query = @"SELECT Radnik.rbr, Radnik.prezime, Radnik.ime, radno_mesto.rm, radno_mesto.naziv , jpm.jpm , jpm.naziv, Radnik.s_sprema, Radno.status, Radno.datum FROM radno_mesto
INNER JOIN (jpm INNER JOIN (Radnik INNER JOIN Radno ON Radnik.rbr = Radno.rbr) ON jpm.jpm = Radnik.jpm) ON radno_mesto.rm = Radnik.rm
where datum =" + dateTimePicker1.Value.ToShortDateString();
[ dusans @ 19.05.2017. 22:31 ] @
Koristi parametre u upitu umesto spajanja stringova.
To je prvo i osnovno pravilo, spašava te glavobolje oko
konverzije vrednosti u sql ekvivalente a i debelo je sigurnije
pošto te standardno lišava brige sql injection-a.

Prosto je neverovatno da pored toliko primera na internetu i
toliko puta ponovljene stvari koju sam, evo i ja ponovio ovde,
pojavljuju ljudi sa ovakvim građenjem upita i naravno
problemima koji idu uz takav pristup...

http://csharp-station.com/Tutorial/AdoDotNet/Lesson06
[ popmilan76 @ 19.05.2017. 22:54 ] @
Ma nasao sam stotine primera i probao sa parametrima i opet nista....treba da filtriram podatke iz datetimepickera..
[ dusans @ 19.05.2017. 22:58 ] @
Code:


...

var query = 
@"SELECT
        Radnik.rbr, Radnik.prezime, Radnik.ime, radno_mesto.rm, radno_mesto.naziv,
        jpm.jpm , jpm.naziv, Radnik.s_sprema, Radno.status, Radno.datum
    FROM radno_mesto 
    INNER JOIN Radnik ON radno_mesto.rm = Radnik.rm
    INNER JOIN jpm ON jpm.jpm = Radnik.jpm
    INNER JOIN Radno ON Radnik.rbr = Radno.rbr
    WHERE datum = @datum"; 
var cmd = new SqlCommand(query);
cmd.Parameters.AddWithValue("@datum", dateTimePicker1.Value.Date);

...

Pretpostavljam da je u pitanju Windows Forms aplikacija i SQL Server?
[ popmilan76 @ 20.05.2017. 09:05 ] @
Jeste,u pitanju je windows form,ali je baza access...ali cu to sam promeniti...
[ popmilan76 @ 20.05.2017. 09:25 ] @
Prvo mi je prikazivalo gresku kao da postoji isto polje datum jos negde u relacijama,i umesto datum,stavim radno.datum i tada mi prikazuje sledece

No value given for one or more required parameters.
[ dusans @ 20.05.2017. 10:19 ] @
Daj da vidimo kod...
[ popmilan76 @ 20.05.2017. 12:24 ] @
Evo ceo kod....


private void SvePoDatumu()
{


FrmGlavna glavna = new FrmGlavna();
string query = @"SELECT Radnik.rbr, Radnik.prezime, Radnik.ime, radno_mesto.rm, radno_mesto.naziv , jpm.jpm , jpm.naziv, Radnik.s_sprema, Radno.status, Radno.datum FROM radno_mesto
INNER JOIN (jpm INNER JOIN (Radnik INNER JOIN Radno ON Radnik.rbr = Radno.rbr) ON jpm.jpm = Radnik.jpm) ON radno_mesto.rm = Radnik.rm
where Radno.datum = @datum " ;
OleDbCommand cmd = new OleDbCommand(query,conn);
cmd.Parameters.AddWithValue("@datum", dateTimePicker1.Value.Date);
conn.Open();

{
using (OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn))
{
try
{


DataSet ds = new DataSet();
ds.Clear();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
this.dataGridView1.Columns[3].Visible = false;
this.dataGridView1.Columns[4].Visible = false;
DataGridViewColumn column = dataGridView1.Columns[7];
DataGridViewColumn column1 = dataGridView1.Columns[0];
column1.Width = 35;
column.Width = 20;
}
finally
{
conn.Close();
}

}



}
}
[ dusans @ 20.05.2017. 13:06 ] @
Treba:
Code:

using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
[ popmilan76 @ 20.05.2017. 13:23 ] @
Da,to je to...hvala i jos nesto ako hocu neki datum pre ili posle,jel stavljam samo <> umesto =...
[ popmilan76 @ 20.05.2017. 19:36 ] @
I ovo sam proverio i jeste tako...ali da ne pocinjem novu temu,evo ovde cu....ovaj upit sam postavio u datetimepicker change event ili kako se zove i to odmah cim se otvori forma,i samo a tekuci datum je u pitanje pokazuje podatke dobro,u svakom drugom slucaju ne....evo upia


string query = @"SELECT distinct Radnik.rbr, Radnik.prezime, Radnik.ime, radno_mesto.rm, radno_mesto.naziv, jpm.jpm, jpm.naziv, Radnik.s_sprema, Radno.status, Status.NazivStatusa, Radno.datum
FROM (radno_mesto INNER JOIN (jpm INNER JOIN (Radnik LEFT JOIN Radno ON Radnik.rbr = Radno.rbr) ON jpm.jpm = Radnik.jpm) ON radno_mesto.rm = Radnik.rm) LEFT JOIN Status ON Radno.status = Status.SifraStatusa
where ((Radno.datum = @datum) or ((radno.status) is null)) and jpm.jpm =" + glavna.BrojPoste + " order by radnik.s_sprema desc";
OleDbCommand cmd = new OleDbCommand(query,conn);
cmd.Parameters.AddWithValue("@datum", dateTimePicker1.Value.Date);
conn.Open();


verovatno je greska negde u zgradama ili u operatorima ali ja to ne mogu videti
[ djoka_l @ 20.05.2017. 20:25 ] @
A ti opet kako ne treba?

Prvo, ne valja ti zagrada odmah posle FORM. Opet praviš SQL upit konkatenacijom umesto da staviš parametar.
I, zaboga, koristi [ code ] tagove i nemoj da šediš space... Kao da će ti se izlizati tastatura ako koristiš nazubljivanje.
[ popmilan76 @ 20.05.2017. 21:22 ] @
Ovo je upit koji je napravio access,samo sam ga iskopirao....nije greska u tom zarezu nego nesto dole cini mi se...jer samo prvi put bude dobro,a posle kada promenim,u bilo koji datum,da nije danasnji,ne prikazuje dobro....
[ popmilan76 @ 21.05.2017. 08:33 ] @
Evo ovako,imam dve tabele radnik i radno,i kada krenem da azuriram radnike da su dosli na posao,tabela mi je prazna,i krenem da ih upisujem,i izbacuje mi dolazak i datum,i popunim celu tabelu tako,i kada treba sutra da ih postavim,isto treba da bude blanko,kao i ona prethodna...da li je to izvodljivo i jos nesto kada selektujem neki red u datagridview i azuriram ga,hocu da mi ostane taj red,a ne da se vraca na prvi...
[ popmilan76 @ 21.05.2017. 21:34 ] @
Reseno sve,hvala svima...