12. juni 2006 - 14:49Der er
6 kommentarer og 1 løsning
Problem med INSERT
Jeg har følg. SQL i min asp-applikation, som bruges både ved bogføring af fakturaer, og udligning af betalinger.
INSERT INTO Periodetotaler ( FirmaID, RegnID, Perioder, PeriodeNr, Konto, Debet, Kredit, Bogf ) SELECT DISTINCTROW Detail2.FirmaID, Detail2.RegnID, Detail2.Perioder, Detail2.PeriodeNr, Detail2.Konto, 0 AS Expr1, 0 AS Expr2, True AS Expr3 FROM Detail2 GROUP BY Detail2.FirmaID, Detail2.RegnID, Detail2.Perioder, Detail2.PeriodeNr, Detail2.Konto
Men den virker kun når man bogfører en faktura, og ikke når den skal udligne betalingen.
Så kommer den med følgende fejl (Kørt i Access):
Microsoft Office Access angav 0 felt(er) til Null pga. en typekonverteringsfejl, og 1 post(er) blev ikke føjet til tabellen pga. nøglefejl, 0 post(er) pga. låsefejl og 0 poster pga. fejl i valideringsregler. Vil du køre handlingsforespørgslen alligevel?
- At de felter du du overfører til en tabel er af samme type. - At den postr du forsøger at overføre ikke er tabellens primære nøgle. - at den post du forsøger at overføre ikke har den egenskab, at dubletter ikke tillades (Indeksereing)
Typerne burde være ens, da det jo er fra den samme tabel den tager dataene fra.
I Detail2 tabellen, er der kun 1 nøgle (ID), og den bliver ikke overført.
I Periodetotaler tabellen, er der 4 nøgler (FirmaID, RegnID, Perioder, Konto) og alle disse felter bliver taget fra Detail2 tabellen. FirmaID, RegnID og Konto er indexeret, med tilladelse af dubletter og Perioder er ikke Indexeret
Det viste sig, at der var en dobbelt post, som systemet åbenbart fra start er lavet til at ignorere, når det køres fra access-applikationen.
Det kan den bare ikke, når den kører fra min asp applikation.
Jeg ændrede funktionen fra:
Function RunQ_Bogf_DanPerioder() SQL = "INSERT INTO Periodetotaler ( FirmaID, RegnID, Perioder, PeriodeNr, Konto, Debet, Kredit, Bogf )" SQL = SQL & " SELECT DISTINCTROW Detail2.FirmaID, Detail2.RegnID, Detail2.Perioder, Detail2.PeriodeNr, Detail2.Konto, 0 AS Expr1, 0 AS Expr2, True AS Expr3" SQL = SQL & " FROM Detail2" SQL = SQL & " GROUP BY Detail2.FirmaID, Detail2.RegnID, Detail2.Perioder, Detail2.PeriodeNr, Detail2.Konto" Set RunQ = Server.CreateObject("ADODB.Command") RunQ.ActiveConnection = MM_SW_STRING RunQ.CommandText = SQL RunQ.Execute RunQ.ActiveConnection.Close end function
Til:
Function RunQ_Bogf_DanPerioder() on error resume next SQL = "SELECT DISTINCTROW Detail2.FirmaID, Detail2.RegnID, Detail2.Perioder, Detail2.PeriodeNr, Detail2.Konto, 0 AS Expr1, 0 AS Expr2, True AS Expr3" SQL = SQL & " FROM Detail2" SQL = SQL & " GROUP BY Detail2.FirmaID, Detail2.RegnID, Detail2.Perioder, Detail2.PeriodeNr, Detail2.Konto"
Spørgsmålet lukkes, mugs: du får points, da det omhandlede dubletter. Det var dog ikkeet access problem, men derimod et problem med db-forbindelsen fra asp der ikke er hurtig nok.
Tak for point - Jeg har ikke meget forstand på ASP, faktisk slet intet, men en gang imellem kan det betale sig for en amatør at svare ;o)
Synes godt om
Ny brugerNybegynder
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.