Avatar billede simsen Mester
17. juli 2006 - 20:15 Der er 4 kommentarer og
1 løsning

Bruge DataGridView eller?

Jeg har nu lavet min select kommando, som bare virker perfekt. Jeg får data ud, som jeg kan putte ind de rigtige steder...... (se kode for det nederst).

Men nu skal jeg så have ordrerne listet ind. Og her jeg ikke aner, hvad jeg
skal bruge - om jeg skal bruge en almindelig tekstboks (flere linier) eller
et DataGridView eller hvad. Hvis jeg skal lave et DataGridView, skal jeg så
lave en ny DataBinding (altså ny select) - så jeg ikke roder rundt med den,
jeg har lavet?

Det jeg skal have ud fra min nuværende select er

Antal og VareNr

Men derudover, så skal jeg også have fat i en ny tabel (Produkter), hvor jeg
udfra Varenr vil hente Varebeskrivelse samt PrisExMoms.

Yderligere vil jeg have en kolonne, hvor jeg så beregner Antal * PrisExMoms

Altså sagt på en anden måde - jeg vil have følgende ud:

Antal  VareNr  Varebeskrivelse  PrisExMoms  PrisIalt

Hvor jeg jo nu burde have Antal og VareNr men mangler at hente
Varebeskrivelse og PrisExMoms og for hver linie så skal have en kolonne hvor
jeg beregner PrisIalt.

Håber ikke det er for forvirrende....

mvh

simsen :-)

Kode:

/ Hente data ud til faktura indhold
                string mySelectQuery = "SELECT Faktura.*, Kunder.*, Ordre.* FROM Kunder INNER JOIN (Faktura INNER JOIN Ordre ON Faktura.FakturaID = Ordre.FakturaNr) ON Kunder.KundeId = Faktura.KundeID WHERE FakturaID=@FakturaID";

                string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\ANSI\\fakturasystem.mdb";

                OleDbConnection myConnection = new OleDbConnection(connectionString);
                OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);
                myCommand.Parameters.Add("@FakturaID", OleDbType.Integer).Value = FakturaID;


                myConnection.Open();

                OleDbDataReader myReader;

                myReader = myCommand.ExecuteReader();

                while (myReader.Read())
                {
                    // Du skal nok ikke hardkode index
                    txtFakturaNr.Text = myReader["FakturaID"].ToString();
                    txtKundeNavn.Text = myReader["Navn"].ToString();
                    txtKundeAdresse.Text = myReader["Adresse"].ToString();
                    txtKundePostnr.Text = myReader["Postnr"].ToString();
                    txtKundeBy.Text = myReader["Byen"].ToString();
                    txtKundeTelefonnr.Text = myReader["Telefonnr"].ToString();
                    txtKundeMobilnr.Text = myReader["Mobilnr"].ToString();

                    DateTime fakDato = Convert.ToDateTime(myReader["Dato"].ToString());
                    txtFakturaDato.Text = fakDato.ToShortDateString();

                    DateTime betDato = Convert.ToDateTime(myReader["BetalingsDato"].ToString());
                    txtForfaldsdato.Text = betDato.ToShortDateString(); ToString();
                }

                myReader.Close();

                myConnection.Close();
}
            catch (Exception e)
            {
                MessageBox.Show("Der er en fejl" + e.Message);
            }
Avatar billede segato Nybegynder
18. juli 2006 - 10:50 #1
Hej Simsen,

Der findes to måder at gøre det på. Simple databinding og complex databinding. Simple databinding er hvis du kun vil vise en enkelt række. Lidt som du selv har gjort med at proppe værdier i textbokse men via databinding. Complex databinding er hvis man kan vil vise en hel masse rækker. Til complex databinding vil jeg klart anbefale DataGrid som du selv nævner, men der skal du have data over i et dataset eller en Collection.

Der er en meget god artikel beskrevet her du kan bruge:

http://www.akadia.com/services/dotnet_databinding.html
Avatar billede segato Nybegynder
18. juli 2006 - 10:52 #2
Btw ville jeg nok også skifte din kode ud med DataSet ds = myCommand.ExecuteDataSet();

Og så bruge simple databinding. SOm artiklen beskriver kan du så bare ændre Position i dit dataset og så sker alt magien i din app af sig selv.
Avatar billede simsen Mester
07. september 2006 - 08:25 #3
Hmmmmmm - kan ikke huske en døjt angående dette spørgsmål... - men ved da, jeg fik det til at lykkes - så smid et svar segato - og du får points

mvh
simsen :-)
Avatar billede segato Nybegynder
07. september 2006 - 08:54 #4
.D
Avatar billede segato Nybegynder
07. september 2006 - 08:54 #5
svar D
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