Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Zdravím,

Snažím se zprovoznit vypisování dat z Databáze pomocí Repeatrů.

Vše funguje do té doby dokud nedám podmínku do dotazu

SqlDataAdapter cmd1 = new SqlDataAdapter("SELECT ID_Dic, Dic, OsCislo, DatumZalozeni, Resitel, Poznamka, EvCislo FROM V_Dic WHERE ID_ECislo = '"+ ID_ECislo +"'", cnn);

funguje to, vypíše to vše,ale s podmínkou se zobrazuje chyba :**This constraint cannot be enabled as not all values have corresponding parent values.**

Nějaké rady?

using (SqlConnection cnn = new SqlConnection())
            {
                cnn.ConnectionString = ConfigurationManager.ConnectionStrings["zamest"].ConnectionString;
                cnn.Open();

                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cnn;
                cmd.CommandText = "SELECT ID_ECislo FROM T_ECislo WHERE E_Cislo_TMUK = @E_Cislo_TMUK and E_Cislo_URAD = @E_Cislo_URAD and E_Cislo_Rok = @E_Cislo_Rok and E_Cislo_Poradi = @E_Cislo_Poradi";//parametr
                cmd.Parameters.Add(new SqlParameter("E_Cislo_TMUK", System.Data.SqlDbType.NVarChar));// přidání parametru a určení datového typu
                cmd.Parameters.Add(new SqlParameter("E_Cislo_URAD", System.Data.SqlDbType.NVarChar));// přidání parametru a určení datového typu
                cmd.Parameters.Add(new SqlParameter("E_Cislo_Rok", System.Data.SqlDbType.NVarChar));// přidání parametru a určení datového typu
                cmd.Parameters.Add(new SqlParameter("E_Cislo_Poradi", System.Data.SqlDbType.NVarChar));// přidání parametru a určení datového typu
                cmd.Parameters["E_Cislo_TMUK"].Value = EvidencniCislo[0];// určení parametru odkuk vzít data
                cmd.Parameters["E_Cislo_URAD"].Value = EvidencniCislo[1];// určení parametru odkuk vzít data
                cmd.Parameters["E_Cislo_Rok"].Value = EvidencniCislo[2];// určení parametru odkuk vzít data
                cmd.Parameters["E_Cislo_Poradi"].Value = EvidencniCislo[3];// určení parametru odkuk vzít data

                DataTable dt = new DataTable();
                SqlDataAdapter sqlda = new SqlDataAdapter(cmd);
                sqlda.Fill(dt);
                string IDECislo = dt.Rows[0]["ID_ECislo"].ToString();



                SqlDataAdapter cmd1 = new SqlDataAdapter("SELECT ID_Dic, Dic, OsCislo, DatumZalozeni, Resitel, Poznamka, EvCislo FROM V_Dic WHERE ID_ECislo = '"+ ID_ECislo +"'", cnn);


                //Create and fill the DataSet.
                DataSet ds = new DataSet();
                cmd1.Fill(ds, "Dic");

                //Create a second DataAdapter for the Titles table.
                SqlDataAdapter cmd2 = new SqlDataAdapter("select Obdobi, ID_Dic from T_Obdobi", cnn);
                cmd2.Fill(ds, "Obdobi");

                //Create a second DataAdapter for the Titles table.
                SqlDataAdapter cmd3 = new SqlDataAdapter("select  * from V_AktualizaceDic", cnn);
                cmd3.Fill(ds, "OsCislo");

                //Create the relation bewtween the Authors and Titles tables.
                ds.Relations.Add("Obdobi",
                ds.Tables["Dic"].Columns["ID_Dic"],
                ds.Tables["Obdobi"].Columns["ID_Dic"]);




                ds.Relations.Add("OsCislo",
                ds.Tables["Dic"].Columns["ID_Dic"],
                ds.Tables["OsCislo"].Columns["ID_Dic"]);

                //Bind the Authors table to the parent Repeater control, and call DataBind.
                parentRepeater.DataSource = ds.Tables["Dic"];
                Page.DataBind();


            }

Předem moc děkuju ;)

Editováno 30.3.2015 13:39
Odpovědět 30.3.2015 13:36
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

Vždyť ti to v té chybě píše. Jako podmínku dáváš ID_ECislo, ale jako proměnnou z předchozího dotazu to máš IDECislo , takže nemáš žádnou hodnotu v té podmínce...

Editováno 30.3.2015 14:08
Nahoru Odpovědět 30.3.2015 14:07
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Michal Štěpánek
N-nojmi:

Sorry překlep, i když to mám takhle, tak to stejnak nejde.....

DataTable dt = new DataTable();
               SqlDataAdapter sqlda = new SqlDataAdapter(cmd);
               sqlda.Fill(dt);
               int IDECislo = Convert.ToInt32(dt.Rows[0]["ID_ECislo"]);





               SqlDataAdapter cmd1 = new SqlDataAdapter("SELECT ID_Dic, Dic, OsCislo, DatumZalozeni, Resitel, Poznamka, EvCislo FROM V_Dic WHERE ID_ECislo = '"+ IDECislo +"'", cnn);
Nahoru Odpovědět 30.3.2015 14:52
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

a co nejde teď? co ti to píše?Zkusil jsi, jakou hodnotu ti dává to "IDECislo"?

Editováno 30.3.2015 15:39
Nahoru Odpovědět 30.3.2015 15:37
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Michal Štěpánek
N-nojmi:

Chyba je stejná jako na začátku, a IDECislo vrací '1'....

Nahoru Odpovědět 30.3.2015 15:54
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

Podle mě, když tu podmínku máš takhla, tak by tam neměly být ty jednoduché uvozovky...
Zkus tu podmínku tam dát jako parametr...
Skutečně se sloupce v databázi jmenují tak, jak jsou uvedeny v tom dotazu?

SqlDataAdapter cmd1 = new SqlDataAdapter("SELECT ID_Dic, Dic, OsCislo, DatumZalozeni, Resitel, Poznamka, EvCislo FROM V_Dic WHERE ID_ECislo = '"+ IDECislo +"'", cnn);

EDIT: a máš to dost nešťastně pojmenované, jednou máš cmd jako SqlCommand, pak máš cmd1 jako SqlDataAdaptér... Postupem času budeš muset bádat co je co...

Editováno 30.3.2015 15:59
Nahoru Odpovědět 30.3.2015 15:57
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Michal Štěpánek
N-nojmi:

Jako parametr tam nic zadat nejde, jelikož je to v SqlDataAdapteru....

Nahoru Odpovědět 30.3.2015 16:03
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

tak to udělej jako sql dotaz a adapter z toho udělej až pak...

Nahoru Odpovědět 31.3.2015 13:43
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Michal Štěpánek
N-nojmi:

Stejný problém, stejná chyba na výstupu.......

SqlCommand cmd4 = new SqlCommand();
cmd4.Connection = cnn;
cmd4.CommandText = "SELECT ID_Dic, Dic, OsCislo, DatumZalozeni, Resitel, Poznamka, EvCislo FROM V_Dic WHERE ID_ECislo = @ID_ECislo";//parametr
cmd4.Parameters.Add(new SqlParameter("ID_ECislo", System.Data.SqlDbType.Int));// přidání parametru a určení datového typu
cmd4.Parameters["ID_ECislo"].Value = IDECislo;// určení parametru odkuk vzít data

SqlDataAdapter da = new SqlDataAdapter(cmd4);
Nahoru Odpovědět 1.4.2015 11:07
Není hloupých lidí, jen lidí co málo používají google...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Michal Štěpánek
N-nojmi:

Je to nešťastně pojmenované, ale je to jenom v testu, do ostré verze bych si to nedovolil.

Nahoru Odpovědět 1.4.2015 11:18
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

Ta chyba píše, že: "...ne všechny hodnoty mají odpovídající mateřské hodnoty", tak bych to chápal tak, že se nějaký sloupeček, nebo proměnná jmenuje jinak...
Když to uděláš bez té podmínky, tak se data vyberou? Je v té tabulce vůbec ta hodnota, podle které se to vybírá?
Jak vypadá struktura té tabulky?

Editováno 1.4.2015 11:19
Nahoru Odpovědět 1.4.2015 11:18
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Michal Štěpánek
N-nojmi:

Bez podmínky funguje s ní už ne....

Tabulky:

Nahoru Odpovědět 1.4.2015 12:32
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

A je v té tabulce ta hodnota "1" co je v té podmínce?

Nahoru Odpovědět 1.4.2015 15:05
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.