[ aleksacyber @ 17.01.2010. 13:51 ] @
Code (csharp):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        private int rad;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Start();
        }

        private void Start()
        {
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\\ProZRS\\PracenjeDoc\\pdoc_t.mdb");
            OleDbCommand cmd = new OleDbCommand("Select * From tblPrioritet", cn);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds, "tblPrioritet");
            grid1.DataSource = ds.Tables[0].DefaultView;
            rad = 1;

        }

        private void Novi()
        {
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\\ProZRS\\PracenjeDoc\\pdoc_t.mdb");
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = cn;
            cmd.CommandText = "Insert into tblPrioritet Values (@PrioritetID, @Prioritet, @Od, @Do)";
            cmd.Parameters.Add("@PrioritetID", OleDbType.Integer);
            cmd.Parameters.Add("@Prioritet", OleDbType.VarChar,10);
            cmd.Parameters.Add("@Od", OleDbType.Integer);
            cmd.Parameters.Add("@Do", OleDbType.Integer);
            cmd.Parameters["@PrioritetID"].Value = mm();
            cmd.Parameters["@Prioritet"].Value = txt2.Text.ToUpper();
            cmd.Parameters["@Od"].Value = int.Parse(txt3.Text);
            cmd.Parameters["@Do"].Value = int.Parse(txt4.Text);
            cn.Open();
            cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            cn.Close();            
        }

        private void Apdejt()
        {
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\\ProZRS\\PracenjeDoc\\pdoc_t.mdb");
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = cn;
            cmd.CommandText = "Update tblPrioritet set Prioritet=@Prioritet, Od=@Od, Do=@Do Where PrioritetID=@PrioritetID";
            cmd.Parameters.Add("@PrioritetID", OleDbType.Integer);
            cmd.Parameters.Add("@Prioritet", OleDbType.VarChar,10);
            cmd.Parameters.Add("@Od", OleDbType.Integer);
            cmd.Parameters.Add("@Do", OleDbType.Integer);
            cmd.Parameters["@PrioritetID"].Value = txt1.Text;
            cmd.Parameters["@Prioritet"].Value = txt2.Text.ToUpper();
            cmd.Parameters["@Od"].Value = int.Parse(txt3.Text);
            cmd.Parameters["@Do"].Value = int.Parse(txt4.Text);
            cn.Open();
            cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            cn.Close();
        }

        private void Brisi()
        {
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\\ProZRS\\PracenjeDoc\\pdoc_t.mdb");
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = cn;
            cmd.CommandText = "Delete From tblPrioritet Where PrioritetID=@PrioritetID";
            cmd.Parameters.Add("@PrioritetID", OleDbType.Integer);
           
            cmd.Parameters["@PrioritetID"].Value = txt1.Text;
           
            cn.Open();
            cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            cn.Close();
        }

        private int mm()
        {
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\\ProZRS\\PracenjeDoc\\pdoc_t.mdb");
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = cn;
            cmd.CommandText = "Select Max(PrioritetID) from tblPrioritet";
            cn.Open();
            int i = (int)cmd.ExecuteScalar() + 1;
            cn.Close();
            return i;
        }

        private void grid1_SelectionChanged(object sender, EventArgs e)
        {
            Red();
        }

        private void Red()
        {
            int i = grid1.CurrentRow.Index;

            txt1.Text = grid1[0, i].Value.ToString();
            txt2.Text = grid1[1, i].Value.ToString();
            txt3.Text = grid1[2, i].Value.ToString();
            txt4.Text = grid1[3, i].Value.ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (Control c in this.Controls)
            {
                if (c.GetType().ToString() == "MKON.TXT")
                {
                    c.Text = string.Empty;
                }
            }

            rad = 2;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (rad == 1)
            {
                Apdejt();
            }
            else if (rad == 2)
            {
                Novi();
            }
            Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Brisi(); Start();
        }

    }
}



file:///C:/Documents%20and%20Settings/BJ/Desktop/greska_update.JPG


Stvarno ne znam zasto nece.


[Ovu poruku je menjao Shadowed dana 17.01.2010. u 17:36 GMT+1]
[ aleksacyber @ 17.01.2010. 13:54 ] @
Zaboravio sam napisati da Insert, Delete rade, a update ni da cuje.
[ malo_nj @ 17.01.2010. 14:49 ] @
probaj ovo cmd.Parameters["@PrioritetID"].Value = int.Parse(txt1.Text);

pokusaj i uraditi update bez upotrebe parametara.

cmd.CommandText = "Update tblPrioritet set Prioritet='bla bla', Od=1, Do=2 Where PrioritetID=01";

[ aleksacyber @ 17.01.2010. 15:24 ] @
Zamijenio update string sa ovim:

cmd.CommandText = "Update tblPrioritet set PrioritetID=@PrioritetID, Prioritet=@Prioritet, Od=@Od, Do=@Do Where PrioritetID=@PrioritetID";

i radi. Svasta, pa bas moram da podeim i polje koje ne apdejtujem u sql upitu. U ovom slucaju PrioritetID.


Jos jedno pitanje, kada ovako prosledjujem vrijednosti parametrima, onda ne moram da pazim kakvi su, int, datetime ...., posto sam odredio u parametru sta je u pitanju.

cmd.Parameters["@PrioritetID"].Value = txt1.Text;

ne moram da pisem int.parse(txt1.Text), ako sam dobro razumio ove parametre, tako isto sa datumom i drugim tipovima?
[ malo_nj @ 17.01.2010. 18:24 ] @
ne moras da uneses svako polje kod SQL Update problem su parametri valjda kod oledb on ih ne poziva po imenu nego po redosledu po kome su dodati, npr sad kad bi zamijenio redosled parametara u Update-u opet bi dobio gresku (imao je neko skoro isti problem sorry sto se ne sjetih ranije).

[Ovu poruku je menjao malo_nj dana 17.01.2010. u 19:37 GMT+1]
[ aleksacyber @ 17.01.2010. 20:58 ] @
Hvala malo_nj. U svako slucaju radi. Pozz