Avatar billede simsen Mester
10. marts 2007 - 12:19 Der er 1 kommentar og
1 løsning

join af tabeller og vise dem på side

Hej,

Jeg har en forespørgsel (som jeg har testet i Access og den virker der), som jeg bare ikke kan få til at virke, når jeg forsøger at køre den i asp.net....

Jeg tror, det er fordi jeg ikke har styr på - hvad der skal stå de forskellige steder, når jeg trækker felterne ud fra databasen, nogen der kan hjælpe?

Koden:

public FStatus GetInvoice(int FakturaID, ref DataTable Invoice)
    {
        FStatus status = FStatus.Failure;

        DataRow r = null;
        DataTable AItems = new DataTable();

        try
        {
            AItems.Columns.Add(new DataColumn("FakturaID", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("KundeID", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Fakturanr", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Dato", Type.GetType("System.String")));

            AItems.Columns.Add(new DataColumn("BetalingsDato", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Porto", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Betalt", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("RykkerSendt", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Momssats", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("PrisExMoms", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("FirmaId", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Navn", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Adresse", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Postnr", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Byen", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("OrdreID", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Varenr", Type.GetType("System.String")));
            AItems.Columns.Add(new DataColumn("Antal", Type.GetType("System.String")));

            command.CommandText = "SELECT Faktura.FakturaID, Faktura.KundeID AS Faktura_KundeID, Faktura.Fakturanr AS Faktura_Fakturanr, Faktura.Dato, Faktura.BetalingsDato, Faktura.Porto, Faktura.Betalt, Faktura.RykkerSendt, Faktura.Momssats, Faktura.PrisExMoms, Kunder.KundeId AS Kunder_KundeId, Kunder.FirmaId, Kunder.Navn, Kunder.Adresse, Kunder.Postnr, Kunder.Byen, Kunder.Telefonnr, Kunder.Mobilnr, Kunder.EmailAdr, Kunder.Noter, Kunder.km, Ordrer.OrdreID, Ordrer.FakturaNr AS Ordrer_FakturaNr, Ordrer.VareNr, Ordrer.Antal, Ordrer.MomsId FROM (Kunder INNER JOIN Faktura ON Kunder.KundeId = Faktura.KundeID) INNER JOIN Ordrer ON Faktura.Fakturanr = Ordrer.FakturaNr WHERE (((Ordrer.FakturaNr)=@FakturaID))";

            command.Parameters.Clear();
            command.Parameters.Add(new OleDbParameter("@FakturaID", FakturaID));

            OleDbDataReader myReader = command.ExecuteReader();

            //går gennem tabellen og lægger ind i rækker
            while (myReader.Read())
            {
                r = AItems.NewRow();

                try
                {
                    r["FakturaID"] = (myReader["Ordrer.FakturaNr"]);
                    r["KundeID"] = (myReader["Ordrer.KundeID"]);
                    r["Fakturanr"] = (myReader["Fakturanr"]);
                    r["Dato"] = (myReader["Dato"]);
                    r["BetalingsDato"] = (myReader["BetalingsDato"]);
                    r["Porto"] = (myReader["Porto"]);
                    r["Betalt"] = (myReader["Betalt"]);
                    r["RykkerSendt"] = (myReader["RykkerSendt"]);
                    r["Momssats"] = (myReader["Momssats"]);
                    r["PrisExMoms"] = (myReader["PrisExMoms"]);
                    r["FirmaId"] = (myReader["FirmaId"]);
                    r["Navn"] = (myReader["Navn"]);
                    r["Adresse"] = (myReader["Adresse"]);
                    r["Postnr"] = (myReader["Postnr"]);
                    r["Byen"] = (myReader["Byen"]);
                    r["OrdreID"] = (myReader["OrdreID"]);
                    r["Varenr"] = (myReader["Varenr"]);
                    r["Antal"] = (myReader["Antal"]);
                }
                catch
                { }

                //Tilføjer rækken til datatable
                AItems.Rows.Add(r);
            }

            myReader.Close();
            Invoice = AItems;
            status = FStatus.Success;
        }
        catch
        { }

        return status;
    }

Exception jeg får er: There is no row at position 0.

Men som sagt, jeg kan køre den nøjagtige SQL sætning i Access og får det ud, jeg skal....

mvh
simsen
Avatar billede dr_chaos Nybegynder
10. marts 2007 - 20:55 #1
hvilken linie får du exception i ?
Avatar billede simsen Mester
10. marts 2007 - 23:06 #2
Har fundet fejlen....

Silly me, har kørt "run to curser" 30-40 gange mindst.......uden at læse, hvad der har af input....... Jeg sammenligner jo

(((Ordrer.FakturaNr)=@FakturaID))";

Og nej FakturaNr og FakturaID er ikke identiske.....

mvh
simsen :-)
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