Avatar billede simsen Mester
22. marts 2008 - 07:30 Der er 1 løsning

Fejl ved indsæt/hent fra access database

Hej,

Jeg har en stump kode, hvor jeg først indsætter en række i en tabel i en access database. Umiddelbart efter, vil jeg så hente id'et fra den jeg lige har oprettet (for så at indsætte en ny række i samme tabel men denne gang med det sidst indtastede id).

Først - det er IKKE selve sql statements, der er et problem, det er kørslen af koden, der volder problemer.....

Når jeg forsøger at køre koden med en "Run to curser" og stepper mig igennem, sætter den korrekt ind ny række med eksempelvis id 45, henter rækken med id 45 og laver en ny række, hvor jeg bruger id 45.....

MEN kører jeg koden med F5 (altså uden at steppe), så er det som om den først henter (dermed id 44 og IKKE den jeg skal bruge nemlig 45), indsætter en række og så indsætter en række igen hvor den så bruger id 44......

Min kode:

if (error.SetNewError(companyid, 1, employeeId, product, versioni, patch, Convert.ToInt32(ddlNewErrorPriority.SelectedValue), 0, txtNewErrorHeadline.Text, txtNewErrorMessage.Text, Convert.ToString(DateTime.Now)) == Status.Success)
            {
                ERSError error2 = new ERSError();

                DataTable getLastError = null;

                if (error2.GetLastError(companyid, ref getLastError) == Status.Success)
                {
                    int id = Convert.ToInt32(getLastError.Rows[0]["errorCyklusId"]);
                    lblNewErrorId1.Text = Convert.ToString(id);
                    Label1.Text = Convert.ToString(id);

                    ERSError error3 = new ERSError();

                    if (error3.SetNewError(companyid, 1, employeeId, product, versioni, patch, Convert.ToInt32(ddlNewErrorPriority.SelectedValue), Convert.ToInt32(lblNewErrorId1.Text), txtNewErrorHeadline.Text, txtNewErrorMessage.Text, Convert.ToString(DateTime.Now)) == Status.Success)
                    {
                    }
                }
            }

Altså den korrekte fremgangsmåde (som den burde eksekvere koden i MIN verden) er:

1) if (error.SetNewError(companyid, 1, employeeId, product, versioni, patch, Convert.ToInt32(ddlNewErrorPriority.SelectedValue), 0, txtNewErrorHeadline.Text, txtNewErrorMessage.Text, Convert.ToString(DateTime.Now)) == Status.Success)
2) if (error2.GetLastError(companyid, ref getLastError) == Status.Success)
3) if (error3.SetNewError(companyid, 1, employeeId, product, versioni, patch, Convert.ToInt32(ddlNewErrorPriority.SelectedValue), Convert.ToInt32(lblNewErrorId1.Text), txtNewErrorHeadline.Text, txtNewErrorMessage.Text, Convert.ToString(DateTime.Now)) == Status.Success)

men den tager dem i stedet som:
2
1
3

Nogen der kan fortælle mig, hvorfor den IKKE eksekverer i samme rækkefølge, som når man laver en "Run to curser" og ikke mindst, hvordan jeg kan ændre koden, så den kører det i korrekt rækkefølge?

mvh
simsen :-)
Avatar billede simsen Mester
22. marts 2008 - 19:14 #1
Har opgivet at finde ud af hvor "fejlen" ligger........Har istedet klippet den første oprettelse ud og sat den ind i en knap for sig selv......så fungerer det perfekt.....ligesom hvis jeg bruger "run to curser"........
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



IT-JOB