» »

C# težava

C# težava

pecavar34 ::

Pozdravljeni...

Naredil sem formo kjer bi v access bazo vpisoval ure recimo kdaj sem delal in mi konstantno meče ven error: could not find output table "Ure"

Prosim za pomoč:

Sintaksa:
namespace Novo
{
    public partial class Form1 : Form
    {

        public string myConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Ure.accdb";  

        private OleDbDataAdapter dataAdapter;
        private OleDbConnection conn;

        public Form1()
        {
            InitializeComponent();
        }

        private void Btn1_Click(object sender, EventArgs e)
        {

            int UreOd, UreDo, rez1;
            UreOd = Convert.ToInt32(txtUreOd.Text);
            UreDo = Convert.ToInt32(txtUreDo.Text);
            rez1 = UreDo - UreOd;
            lblIzpis.Text = "Delal si na dan:" + System.Environment.NewLine + DateIzbor.Text
             + System.Environment.NewLine + "od " + txtUreOd.Text +
            System.Environment.NewLine + "do " + txtUreDo.Text + System.Environment.NewLine
            + "Oddelal si: " + rez1.ToString() + " ur";

            if ((txtUreOd.Text.Length != 0) && (txtUreDo.Text.Length != 0))  // preverjanje ali so vnešene vrednosti na formi
            {
                OleDbConnection myConnection = null;
                try
                {
                    myConnection = new OleDbConnection();                      // kreiranje konekcije
                    myConnection.ConnectionString = myConnectionString;
                    myConnection.Open();

                    IDbCommand cmd = myConnection.CreateCommand();
                    cmd.Connection = myConnection;
                    cmd.CommandText = "INSERT INTO Ure (DatumDela, Od, Do, StUr) VALUES (" + DateIzbor.Text + ", " + txtUreOd.Text + ", " + txtUreDo.Text + ", " + rez1.ToString() + ");";
                    cmd.Prepare();
                    cmd.ExecuteNonQuery();
                    
                }
                catch (Exception err)
                {
                    MessageBox.Show("Nekaj ni v redu!" + err.Message);
                }
                finally
                {
                    if (myConnection != null)
                        myConnection.Close();
                }
            }
        }
    }
Asus ROG G751JY
  • spremenil: bluefish ()

JesseP ::

Drugič prosim uporabi značke za kodo, ali objavi recimo na pastebin.com, ker tole je svinjarija za brat.

Nekaj na hitro iz moje strani, ker se mi ne da mučit skozi celo kodo, bi rekel da preveri tvoj connection string oz. bolj natačno tvoj dataSource. Napaka zgleda izhaja iz tam.
Preveri, če si pravilno skonfiguriral dataSource

pecavar34 ::

Se opravičujem, sedaj mi najde tabele ampak se zgodi napaka pri shranjevanju podatkov, namreč podatki so samo v bin direktoriju k je začasen ne pa v access datoteki ki je zraven nekje drugje ampak kot si rekel je to verjetno napaka s connection stringom.

Pa zanima me zakaj mi v access-u napiše datum ki ga zberem z datepicker-jem recimo 18.4.1834?

namespace Novo
{
public partial class Form1 : Form
{

public string myConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Ure.accdb"; 

private OleDbDataAdapter dataAdapter;
private OleDbConnection conn;

public Form1()
{
InitializeComponent();
}

private void Btn1_Click(object sender, EventArgs e)
{

int UreOd, UreDo, rez1;
UreOd = Convert.ToInt32(txtUreOd.Text);
UreDo = Convert.ToInt32(txtUreDo.Text);
rez1 = UreDo - UreOd;
lblIzpis.Text = "Delal si na dan:" + System.Environment.NewLine + DateIzbor.Text
+ System.Environment.NewLine + "od " + txtUreOd.Text +
System.Environment.NewLine + "do " + txtUreDo.Text + System.Environment.NewLine
+ "Oddelal si: " + rez1.ToString() + " ur";

if ((txtUreOd.Text.Length != 0) && (txtUreDo.Text.Length != 0)) // preverjanje ali so vnešene vrednosti na formi
{
OleDbConnection myConnection = null;
try
{
myConnection = new OleDbConnection(); // kreiranje konekcije
myConnection.ConnectionString = myConnectionString;
myConnection.Open();

IDbCommand cmd = myConnection.CreateCommand();
cmd.Connection = myConnection;
cmd.CommandText = "INSERT INTO Ure (DatumDela, Od, Do, StUr) VALUES (" + DateIzbor.Text + ", " + txtUreOd.Text + ", " + txtUreDo.Text + ", " + rez1.ToString() + ");";
cmd.Prepare();
cmd.ExecuteNonQuery();

}
catch (Exception err)
{
MessageBox.Show("Nekaj ni v redu!" + err.Message);
}
finally
{
if (myConnection != null)
myConnection.Close();
}
}
}
}
Asus ROG G751JY

Zgodovina sprememb…

bedak ::

pecavar34 ::

bedak je izjavil:

http://stackoverflow.com/questions/8389...



Pozdravljen probal vse živo žal mi še vedno ni ratalo vstavit podatke v bazo :( je v binu (datoteki) ki je začasen to je pa to to
Asus ROG G751JY

JanOlMajti ::

Probaj INSERT spremenit:
VALUES (" + DateIzbor.Text + ", " + txtUreOd.Text + ", " + txtUreDo.Text + ", " + rez1.ToString() + ")";

v
VALUES ('" + DateIzbor.Text + "', ...

Zgodovina sprememb…

pecavar34 ::

Hvala sem uspel usposobit da mi zapisuje zdaj vnešene podatke. Me pa zanima, preko menustrip-a sem naredil da mi odpre novo formo, preko katere bi brisal podatke če glede na to kater ID bi izbral v combobox-u bi zbrisalo to vrstico. Combobox je povezan z bazo. Sedaj koda moja zgleda nekako takole:

 public partial class Form2 : Form
    {
         public string myConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Bojan\Desktop\Programiranje\School\Novo\Novo\Ure.accdb";  // to je provider za Access 2007 in več - če ga ni na lokalni mašini ga je treba namestiti!!!

        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'dataSet1.Ure' table. You can move, or remove it, as needed.
            this.ureTableAdapter.Fill(this.dataSet1.Ure);

        }

        private void Brisanje_Click(object sender, EventArgs e)
        {
            OleDbConnection myConnection = null;
                
                
                    myConnection = new OleDbConnection();                      // kreiranje konekcije
                    myConnection.ConnectionString = myConnectionString;
                    myConnection.Open();

                    OleDbCommand cmd = myConnection.CreateCommand();
                    cmd.Connection = myConnection;
                    cmd.CommandText = "DELETE FROM Ure WHERE (ID) = '"+Izbor.SelectedValue+"'";
                    cmd.ExecuteNonQuery();
                    cmd.Prepare();
                    myConnection.Close();
            }
        }
}


Imam pa tudi težavo da z pritiskom na križec ne morem zapreti forme ki se odpre :( nekaj se mi je pobrkljalo med preizkušanjem.... Hvala za pomoč
Asus ROG G751JY

JanOlMajti ::

Ti dela ta koda ali ne? Ti izbriše izbran ID iz baze?

pecavar34 ::

JanOlMajti je izjavil:

Ti dela ta koda ali ne? Ti izbriše izbran ID iz baze?


Ne zal mi ga ne :(
Asus ROG G751JY

JanOlMajti ::

1. Narediš in poimenuješ Combobox.
2. Narediš SelectedIndexChanged Link
3. Vnos podatkov iz baze (Datatable ali DataSet) nekako takole:
private void cb_oseba_vo_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataRowView drvOseba = cb_oseba_vo.SelectedItem as DataRowView;
            if (drvOseba != null)
            {
                conn = new SqlConnection(connectionString);
                SqlDataAdapter da_os = new SqlDataAdapter("SELECT vrsta_osebe_id, datum_zacetek FROM vrsta_osebe WHERE _oseba_id ='" + drvOseba["oseba_id"] + "' ORDER BY datum_zacetek", conn);
                DataTable dt_os = new DataTable();
                da_os.Fill(dt_os);

                cb_vrsta_os_datum_od.DataSource = dt_os.DefaultView;
                cb_vrsta_os_datum_od.ValueMember = "vrsta_osebe_id";
                cb_vrsta_os_datum_od.DisplayMember = "datum_zacetek";
            }
        }

4. Uporabiš tvojo zgornjo kodo za izbris
cmd.CommandText = "DELETE FROM Ure WHERE (ID) = '"+Izbor.SelectedValue+"'";


5. Zamenjaj parametre iz zgornje kode s svojimi.

Na StackOverFlow in podobnimi forumi imaš kup primerov, celo na youtube-u, če se ne boš znašel iz tega.

JanOlMajti ::

Upoštevaj tole, ne gornji post!

1. Narediš in poimenuješ Combobox.
2. Vnos podatkov iz baze (Datatable ali DataSet) nekako takole:
private void vnos_v_comboBox()
        {
          conn = new SqlConnection(connectionString);
          SqlDataAdapter da_vodja_projekta = new SqlDataAdapter("SELECT oseba_id, ime_priimek FROM oseba ORDER BY ime_priimek", conn);
          DataTable dt_vodja_projekta = new DataTable();
          da_vodja_projekta.Fill(dt_vodja_projekta);
          
          cb_oseba_vo.DataSource = dt_vodja_projekta.DefaultView;
            cb_oseba_vo.ValueMember = "oseba_id";
            cb_oseba_vo.DisplayMember = "ime_priimek";
         }


Če hočeš, da ti ob izbiri osebe v Comboboxu še kaj naredi:
Narediš SelectedIndexChanged Link

private void cb_oseba_vo_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataRowView drvOseba = cb_oseba_vo.SelectedItem as DataRowView;
            if (drvOseba != null)
            {
                // your code
            }
        }


4. Uporabiš tvojo zgornjo kodo za izbris
cmd.CommandText = "DELETE FROM Ure WHERE (ID) = '"+Izbor.SelectedValue+"'";


5. Zamenjaj parametre iz zgornje kode s svojimi.

Na StackOverFlow in podobnimi forumi imaš kup primerov, celo na youtube-u, če se ne boš znašel iz tega.

pecavar34 ::

JanOlMajti je izjavil:

Upoštevaj tole, ne gornji post!

1. Narediš in poimenuješ Combobox.
2. Vnos podatkov iz baze (Datatable ali DataSet) nekako takole:
.
.
.

Hvala za pomoč, sedaj bi pa rabil na novi bazi :) se učim... Malo sem brskal po netu uglavnem zdaj imam SQL bazo v kateri je stolpec ImePriimek in Password, naredil sem "login" formo katera te sprašuje po ImePriimku in pass-u ki je točno določen za neko osebo :) delal bi z zanko foreach ker se mi zdi zelo primerna, toda malo se zatakne :D saj me ne spusti v novo formo če vtipkaš vse pravilno, če je narobe pa gre :)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace Kartice
{
    public partial class Pass : Form
    {
       
        Matjaz Matjaz = new Matjaz();
        public Pass()
        {
           // string myconnection = @"C:\Users\Bojan\Desktop\Programiranje\School\Kartice\Kartice\Users.mdf";
            InitializeComponent();
        }

        private void usersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
           
            this.Validate();
            this.usersBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.usersDataSet);

        }

        private void Pass_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'usersDataSet.Users' table. You can move, or remove it, as needed.
            this.usersTableAdapter.Fill(this.usersDataSet.Users);

        }

        private void BtnOk_Click(object sender, EventArgs e)
        {
                if (Imetxt.Text == "")
                {
                    MessageBox.Show("Please enter a valid user name!");
                    Imetxt.Focus();
                }
                else if (Passtxt.Text == "")
                {
                    MessageBox.Show("Please enter a valid password!");
                    Passtxt.Focus();
                }

                string userName1, userPassword1;
                userName1 = Imetxt.Text;
                userPassword1 = Passtxt.Text;
                
                foreach (DataRow row in usersDataSet.Users)
                {
                    if (row["Ime_Priimek"].ToString() == userName1)
                    {
                        if (row["Password"].ToString() == userPassword1)
                        {
                            Pass myForm1 = new Pass();
                            Matjaz myForm2 = new Matjaz();

                            myForm2.Show();
                            myForm1.Hide();
                            break;
                        }
                    }
                    else
                        MessageBox.Show("You have entered a wrong user name or the password!");
                }
    }
        }
        }

Asus ROG G751JY

mladec ::

Zdravo, zanima me, če kdo ve zakaj ne dela koda po if stavku.


if (dr.Read())
                    {
                        if ((dr["username"].ToString() == username) && (dr["password"].ToString() == password))
                        {
                            Vstopna_stran a = new Vstopna_stran();
                            a.Show();
                            this.Close();
                        }
                    }
     
     
                    else
                        MessageBox.Show("Prosim vnesite pravilno uporabniško ime in geslo", "Napaka", MessageBoxButton.OK, MessageBoxImage.Error);

Torej vse dela, if stavek preveri in ko je pogoj izpolnjen bi se morala odpreti vstopnaStran a se ne. Sem poizkušal nešteto načinov in vedno preskoči del kode, kje je VstopnaStra.show
Če bo kdo vedel.

roba87 ::

Ne razumem čisto točno. Če ti preskoči del kode, ki je znotraj if stavka, potem pogoj v if stavku ni izpolnjen.

boogie_xlr ::

Lahko da gre v if, naredi novo formo a v trenutnem scopu, jo pokaže (nemodalno), potem pa se lahko zgodijo dve stvari: this.Close() trenutno formo zapre in disposa, zbriše tudi a, ali pa ko pride iz scopa(ven iz if), zbriše a in ne obstaja več.

Poskusi a.ShowDialog();

Zgodovina sprememb…

mladec ::

Hvala za odgovor. Sem namreč že poiskal. Pod isto metodo button_Click sem imel že en query (select stavek), ki je preveril upIme in geslo. Samo izbirsati je bilo treba drugi if in zadeva je delovala.

joze67 ::

@mladec: če pišeš v Visual Studiu, pomaga, če dovoliš urejevalniuku, da ti od časa do časa uredi kodo - tvoje zamikanje pač sux.
Če bi zgornjo kodo pravilno zamikal, bi izgledala takole:
    if (dr.Read())
    {
        if ((dr["username"].ToString() == username) && (dr["password"].ToString() == password))
        {
            Vstopna_stran a = new Vstopna_stran();
            a.Show();
            this.Close();
        }
    }
    else
        MessageBox.Show("Prosim vnesite pravilno uporabniško ime in geslo", "Napaka", MessageBoxButton.OK, MessageBoxImage.Error);

in bi bilo iz satelita jasno, da je nekaj hudo narobe - MessageBox logično sodi k notranjemu ("je geslo pravilno"), sintaktično pa k zunanjemu ("ali sploh so podatki") .

mladec ::

Slab zamik je posledica slabega kopiranja. V VS je prav napisano.

paco ::

joze67, mislim, da je še satelit preblizu, pa še vedno ne vidi. Prav tako mislim, da ni razumel zadnjega dela tvojega odgovora, ki mu daje odgovor na "satelit". Me zanima kdaj bo spraševal zakaj je uporabnik/geslo napačno, ko se mu v resnici ne bo povezal z bazo oz. mu iz nje ne bo bralo xD.
It iz aj.

matejm1994 ::

joze67 je izjavil:

@mladec: če pišeš v Visual Studiu, pomaga, če dovoliš urejevalniuku, da ti od časa do časa uredi kodo - tvoje zamikanje pač sux.


Ko smo že pri tem, je kakšna bljižnična tipka, da v Visual Studio sam poravna zamike?

black ice ::

Janac ::

Kje se v Visual Studiu nastavi breaking točke? tam kjer koda sintaktično je narobe?

black ice ::

Kjerkoli.

mladec ::

Zdravo, vprašanje.
Delam wpf aplikacijo in se mi je nekje zataknilo. V grid-u imam namreč nekaj dinamično narejenih gumbov in mene zanima, kako lahko določenega programsko odstranim, če vem njegovo ime?


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL problem

Oddelek: Programiranje
141326 (944) win64
»

C# INSERT statment ne vpise podatkov

Oddelek: Programiranje
11861 (735) darkolord
»

C# OleDB create database

Oddelek: Programiranje
71033 (865) DubleG
»

C# okna in podokna

Oddelek: Programiranje
111436 (1030) FlashM
»

[C#] DATA GRID VIEW

Oddelek: Programiranje
131718 (1598) Kekec

Več podobnih tem