Avatar billede Red0z Nybegynder
25. februar 2010 - 15:04 Der er 3 kommentarer og
1 løsning

DataRelation

Hey derude!
Sidder og prøve at lave følgende:

LicenseDataGrid, skal indeholde en Bruger fra Accounts datatable, og under den en tillægelse hvor der står nogle info fra MobilTable som indeholder en værdi der er den samme som en i brugeren.

Fik afvide dette muligvis kunne lade sig gøre med DataRelation, så dette prøver jeg at sætte op. Hvad gør jeg forkert i følgende?
Der kommer ingen info op i mit LicenseDataGrid

Datagrid 1 og 2 er bare for at være sikker på den fandt mine datatables, hvilket den gjorde


            //Set Connectionstrings, DataAdapters, DataSets and CurrencyManager.
            //--------------------------------------------------------------------//
            SqlConnection ConnStr = new SqlConnection(@"Data Source=Red0z\SQLEXPRESS; Initial Catalog=LoginSystem; Integrated Security=True");

            SqlDataAdapter DALogin = new SqlDataAdapter();
            SqlDataAdapter DAID = new SqlDataAdapter();

            DataSet DS = new DataSet();

            CurrencyManager cm;
            //--------------------------------------------------------------------//

            SqlCommand SlctLogin = new SqlCommand("SELECT * FROM Accounts", ConnStr);
            DALogin.SelectCommand = SlctLogin;
            DALogin.Fill(DS, "Accounts");
            dataGridView1.DataSource = DS.Tables["Accounts"];

            SqlCommand SlctMobil = new SqlCommand("SELECT * FROM MobilTable", ConnStr);
            DAID.SelectCommand = SlctMobil;
            DAID.Fill(DS, "MobilTable");
            dataGridView2.DataSource = DS.Tables["MobilTable"];

            DataColumn AccountTable = DS.Tables["Accounts"].Columns["ACCOUNT"];
            DataColumn IDTable = DS.Tables["MobilTable"].Columns["ACCOUNT"];

            DataRelation AccMob = new DataRelation("AccMob", DS.Tables["Account"].Columns["ACCOUNT"], DS.Tables["MobilTable"].Columns["ACCOUNT"]);
            DS.Relations.Add(AccMob);

            //DS.Relations.Add("AccMob", DS.Tables["Accounts"].Columns["ACCOUNT"],
            //    DS.Tables["MobilTable"].Columns["ACCOUNT"]);
           
            LicenseGridView.DataSource = DS.Tables["Accounts"];
            LicenseGridView.DataMember = "AccMob";

            cm = (CurrencyManager)this.BindingContext[DS.Tables["Accounts"]];
Avatar billede janus_007 Nybegynder
25. februar 2010 - 19:15 #1
Hvad er det for en grid du bruger? Man får ikke bare noget forærende ved at lave en relation!
Avatar billede Red0z Nybegynder
26. februar 2010 - 00:05 #2
Jeg benytter en DataGridView..

Og det sted som resultatet skal ende i er LicenseGridView . :)
Er gået lidt forviring i nogle af de linier jeg har skrevet her, men endte også med at komme til at forvirre mig selv i forsøget på at få dette til at virke . :)

gridview 1 og 2 er bare test views. :)
Avatar billede simsen Mester
26. februar 2010 - 10:45 #3
Jeg ville tilgå det anderledes. Nemlig ved at lave én forespørgsel til databasen.

Noget i stil med:

SqlCommand SlctMobil = new SqlCommand("SELECT Accounts.*, Accounts.* FROM Accounts INNER JOIN MobilTable ON Accounts.Stjerne1 = MobilTable.Stjerne2", ConnStr);
            DAID.SelectCommand = SlctMobil;
            DAID.Fill(DS, "MobilTable");
            dataGridView2.DataSource = DS.Tables["MobilTable"];

Stjerne1 = Det felt i Accounts der forbindes med et felt i MobilTable

Stjerne2 = Det felt i MobilTable, som er forbundet med feltet i Accounts
Avatar billede Red0z Nybegynder
23. august 2010 - 13:07 #4
Det endte med en anden løsning, undskyld den lange åbningstid uden aktivitet. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester