» »

[Visual C#] TableAdapter

[Visual C#] TableAdapter

tx-z ::

V Visual Studiu delam program za Windows in problem je sledeč.


Za napolnitev te tabele se uporablja igralecTableAdapter.
V tem tableadapterju je sledeča poizvedba
SELECT        ID_Igralca, ID_Mostva, ImeIgralca, PriimekIgralca, LetnicaRojstvaIgralec, Visina, Teza
FROM            Igralec

Jst bi pa rad naredu, po domač povedan tko:
SELECT        ID_Igralca, ID_Mostva, ImeIgralca, PriimekIgralca, LetnicaRojstvaIgralec, Visina, Teza
FROM            Igralec
WHERE           ID_Mostva = Form1.comboBox1.selectedValue().toString;

 Form1

Form1


Torej da bi mi prikazal samo tiste igralce k so v prej izbranem moštvu..
Kako bi to naredil? Oz. če ima kdo še kakšen boljši predlog kako to implementirat pa tok bolš=D Hvala=D
tx-z
  • spremenilo: tx-z ()

Mitja Bonča ::

Ti bi rad naredil poizvedbo iz kakor je meni videno iz dveh tabel, in sicer iz tabele igralec in iz tabele moštvo. Torej moraš narediti:
(v tabeli Igralec moraš OBVEZNO imeti tuji ključ - ID iz tabele Mostvo):

SELECT Igralec.ID_Igralca, Mostvo.ID_Mostva, Igralec.ImeIgralca, Igralec.PriimekIgralca, Igralec.LetnicaRojstvaIgralec,
Igralec.Visina, Igralec.Teza
FROM Igralec, Mostvo
WHERE Igralec.ID_Mostva = Mostvo.IDMostva AND
ID_Mostva = Form1.comboBox1.GetItemText(comboBox1.SelectedItem);
//AMPAK TO NI ID - JE SAMO IME, RAZEN ČE NIMAŠ SAMO ŠTEVILK V COMBOBOXU! PAZLJIVO S TEM!

OPOZORILO 1: VSAKA TABELA NAJ BI IMELA SVOJ ID - IN TO NE IMENA, ALI KAJ DRUGRGA, PAČ PA ŠTEVILKE OD 1 NAPREJ (V KORAKU PO ENA)

OPOZORILO 2: bolje bi bilo narediti čisto svojo metodo, in vrednost iz comboBoxa poslati pot parameter:

npr v Form1 imaš metodo iz comboBoxa, kjer pridobivaš vrednosti glede na izbrani index v comboBoxu:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
     string strImeMostva = comboBox1.GetItemText(comboBox1.SelectedItem);
     // nato moraš pridobiti Id od izbranega moštva:
     int intIDMostva = PridobitevIdMostva(strImeMostva);
     // sedaj ko imaš id izbranega mostva, pridobiš vse podatke:
     DataTable tabela = PridobitevPodatkovZa_DGW(intIDMostva);
     if(tabela.Rows.Count > 0 )
     {     
         DGW_NalaganjePodatov(tabela);
     }
     else
         dataGridView1.Rows.Clear(); //če je tabela prazna, se izbriše celoten dgw!
}

private int PridobitevIdMostva(string strMostvo)
        {
            int intID = 0;
            using (SqlConnection povezava = new SqlConnection(p))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = "SELECT IDMostva FROM Mostvo Where ImeMostva =  @imeMostva";
                    cmd.Connection = povezava;
                    cmd.Parameters.Add("@imeMostva", SqlDbType.VarChar, 50).Value = strMostvo;
                    cmd.Connection.Open();
                    object objID = cmd.ExecuteScalar();
                    if (objID != null || objID != DBNull.Value)
                        intID = Convert.ToInt32(objID);
                    cmd.Connection.Close();
                }
            }
            return intID;
        }

private DataTable PridobitevPodatkovZa_DGW(int intId)
        {
            using (DataTable tabela = new DataTable("MojaTabela"))
            {
                using (SqlConnection povezava = new SqlConnection(p))
                {
                    using (SqlDataAdapter da = new SqlDataAdapter())
                    {
                        da.SelectCommand = new SqlCommand();
                        da.SelectCommand.CommandText = @SELECT Igralec.ID_Igralca, Mostvo.ID_Mostva, " +
"Igralec.ImeIgralca, Igralec.PriimekIgralca, " +                                                       "Igralec.LetnicaRojstvaIgralec, Igralec.Visina, " +                                                       "Igralec.Teza FROM Igralec, Mostvo " +                                                       "WHERE Igralec.ID_Mostva = Mostvo.IDMostva AND " +                                                       "ID_Mostva = @idMostva";
                        da.SelectCommand.Connection = povezava;
                        da.SelectCommand.Parameters.Add("@idMostva", SqlDbType.Int).Value = intId;
                        try
                        {
                            da.Fill(tabela);
                        }
                        catch 
                        {
                            //čej je mogoča napaka jo izpiši - messageBox
                        }
                    }
                }
                return tabela;
            }
        }

DGW_NalaganjePodatov(DataTable tabela)
{
    //koda za poplonitev podatkov v dataGridView-ja)
}

Upam da se ni malce olajšal delo in pokazal vsaj približno kako naj bi se pisala koda, čeprav tudi to še ni čisto ok, ampak za začetek bo kar uredu.

No če rabiš še kaj ti kar vprašaj,
lp, Mitja

Zgodovina sprememb…

Iluvatar ::

Predlagam, da si malo pogledaš tele posnetke: http://msdn.microsoft.com/en-us/vbasic/.... Posebej tale bo zate zanimiv: http://msdn.microsoft.com/en-us/vbasic/...
So sicer v VB.net vendar je koncept enak.

tx-z ::

Hmm, hvala za obširno razlago, ampak se mi tole zdi mal prekompliciran za tako osnovno stvar kot jo rabm... Zdej sm ugotovu da je to kr hočm js narest enostavno tkole
SELECT        ID_Igralca, ID_Mostva, ImeIgralca, PriimekIgralca, LetnicaRojstvaIgralec, Visina, Teza
FROM            Igralec
WHERE ID_Mostva = ?

Problem je kr pol on kreira na tej formi še en textbox pa gumb, kjer vnesm to vrednost. Rad bi pa da jo določm prek neke spremenljivke...
Pr gumbu pol kreira to kodo
   try
            {
                this.igralecTableAdapter.FillBy5(this.bazaDataSet.Igralec, ((decimal)(System.Convert.ChangeType(iD_MostvaToolStripTextBox.Text, typeof(decimal)))));
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

In tle sm pač samo iD_MostvaToolStripTextBox samo zamenju s to spremenljivko in dela. Problem je da dela šele k prtisnm gumb in ne že ob odprtju forme..Any suggestions?
tx-z

tx-z ::

Sm naredu kr tako da bo vse v istem oknu pa ne bo problema s tem. Zanima pa me kaj je v tej tvoji kodi "p"?
using (SqlConnection povezava = new SqlConnection(p))
tx-z

Zgodovina sprememb…

  • spremenilo: tx-z ()

tx-z ::

Okej to sm zdej vse nekak uspeu narest=) Me pa zanima če kdo slučajno ve, kako bi dodau kakšne elemente v koledar (torej, na formo dodam dateTimePicker), in bi rad naredu tko da če so neki dogodki recimo 10.9.2010, da bi se recimo tist datum otemniu. Kr ta koledar sicr ma tm za databindings, ampak karkol sm naredu nekak mi ni ratal narest da bi kakšno vrednost prkazu tm notr.. Torej odpre se koledar, in če nek dogodek obstaja bi v koledarju bil tist dan drugače označen.
tx-z

detroit ::

hmm če si predstavljam tole prou sm enkrat lih neki podobnga delu za fun



deklarirej

private string[,] pomembniDnevi = new string[32, 13];

pomembniDnevi[1, 1] = "Guess what, nov let";



potem pa na event calendar dayrender


CalendarDay d = e.Day;
TableCell c = e.Cell;
if (d.IsOtherMonth)
c.Controls.Clear();
else
{
string pomen = pomembniDnevi[d.Date.Day, d.Date.Month];
if (pomen != null)
{
c.BackColor = Color.Red;
c.ForeColor = Color.White;
c.Font.Bold = true;
}
}

asp.net calendar komponenta, si predstavlam da una ni dost drugačna
Skero


Vredno ogleda ...

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

C# težava

Oddelek: Programiranje
232950 (1796) mladec
»

[C#,SQL]

Oddelek: Programiranje
5961 (874) JanOlMajti
»

Statistika dijakov, pomoc

Oddelek: Programiranje
211441 (925) Mitja Bonča
»

[C#] Dostop do objekta iz različnih form

Oddelek: Programiranje
181946 (1659) Kekec
»

[C#] Query in code

Oddelek: Programiranje
261535 (1279) iggy1

Več podobnih tem