/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Exception 80020009 ?
Fra : Peter Konner


Dato : 15-10-03 00:14

Hej !

Jeg opretter først en stampost i een tabel, og skal derefter oprette en
postering i en anden tabel.
Stamposten har et autonummereringsfelt (HandelsID), der indgår i
posteringen, så efter oprettelsen læser jeg stamposten igen for at få fat i
dette HandelsID.

Som regel går det godt, men hver tredie/fjerde/femte gang får jeg følgende
fejl:

error '80020009'
Exception occurred.
/saelg-reg.asp, line 185

Fejlen er beskrevet på MS Support
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q175/2/39.asp&NoWebContent=1
men dette svarer ikke til min problemstilling !

Ved nogen, hvad der kan være galt ?
Kan jeg på en måde få fat i dette autonummereringsfelt lige efter min
"insert", så jeg ikke behøver læse posten igen ?

Pft
Peter



 
 
Chrisser (15-10-2003)
Kommentar
Fra : Chrisser


Dato : 15-10-03 07:17

Peter Konner wrote:
> error '80020009'
> Exception occurred.
> /saelg-reg.asp, line 185
>
> Fejlen er beskrevet på MS Support
>
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q175/2/39.asp&NoWebContent=1
> men dette svarer ikke til min problemstilling !
>
> Ved nogen, hvad der kan være galt ?
> Kan jeg på en måde få fat i dette autonummereringsfelt lige efter
> min "insert", så jeg ikke behøver læse posten igen ?

Det ville være rart med nogle kodelinier, incl. linie 185

Mvh
Chrisser



Jørgen Müller (15-10-2003)
Kommentar
Fra : Jørgen Müller


Dato : 15-10-03 09:00

Peter Konner skrev:
>Kan jeg på en måde få fat i dette autonummereringsfelt lige efter min
>"insert", så jeg ikke behøver læse posten igen ?

Du skriver ikke hvilken database du bruger, men kig lidt på @@IDENTITY som
virker i MSSQL og muligvis også andre databaser?

Set rsIdentity = myConn.Execute("SELECT @@IDENTITY as NewID FROM
T_NyligtOpdateretTabel")

--
Med Venlig Hilsen
Jørgen Müller



Peter Konner (15-10-2003)
Kommentar
Fra : Peter Konner


Dato : 15-10-03 10:35

"Chrisser" <cbjDetteFjernes@egdatainform.dk> skrev i en meddelelse
news:bmionb$ghg$1@sunsite.dk...
> Peter Konner wrote:
> > error '80020009'
> > Exception occurred.
> > /saelg-reg.asp, line 185
> >
> > Fejlen er beskrevet på MS Support
> >
>
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q175/2/39.asp&NoWebContent=1
> > men dette svarer ikke til min problemstilling !
> >
> > Ved nogen, hvad der kan være galt ?
> > Kan jeg på en måde få fat i dette autonummereringsfelt lige efter
> > min "insert", så jeg ikke behøver læse posten igen ?
>
> Det ville være rart med nogle kodelinier, incl. linie 185
>
> Mvh
> Chrisser
>

Naturligvis - min fejl (det blev lidt sent i går) !

Der er tale om MS Access, og omkring linie 185 ser det således ud (linie 185
er markeret med >>> til venstre):
------------------------
strSQL = "insert into tbhandel ("
strSQL = strSQL & "KontoID, "
strSQL = strSQL & "HandelsDato, "
strSQL = strSQL & "Klokken, "
strSQL = strSQL & "AutoJournal) "

strSQL = strSQL & "values ('"

strSQL = strSQL & Session.Contents("aktivkontoid") & "', '"
strSQL = strSQL & Request.Form("dato") & "', '"
strSQL = strSQL & Request.Form("klokken") & "', '"
strSQL = strSQL & "N" & "')"

'### Skriv posten til databasen
Connhj.Execute(strSQL)
response.write "Stamdata for handlen er oprettet.<br>&nbsp;<br>"

'### Check om der skal bogføres
if request.form("autopost") = "J" then
'### Læs posten igen for at hente HandelsID
strSQL = "Select HandelsID from tbhandel where (("
strSQL = strSQL & "KontoID=" & Session.Contents("aktivkontoid") & ") "
strSQL = strSQL & "and (HandelsDato=#" & request.form("dato") & "#) "
strSQL = strSQL & "and (Klokken=#" & request.form("klokken") & "#))"
>>> set rsh = Connhj.Execute(strSQL)
'### Opbyg SQL-sætningen til tbPoster
strSQL = "insert into tbposter ("
....osv
------------------------
Meningen er, at jeg senere skal bruge feltet rsh("HandelsID") til tabellen
tbposter (insert'en starter i linie 187 herover)

Mvh
Peter



Jens Gyldenkærne Cla~ (15-10-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-10-03 10:54

Peter Konner skrev:

> '### Læs posten igen for at hente HandelsID

Hvis du benytter en cursor i stedet for en INSERT-forespørgsel, kan
du hurtigt få fat i id-nummeret.


> strSQL = "Select HandelsID from tbhandel where (("
> strSQL = strSQL & "KontoID=" &
> Session.Contents("aktivkontoid") & ") " strSQL = strSQL
> & "and (HandelsDato=#" & request.form("dato") & "#) "
> strSQL = strSQL & "and (Klokken=#" &
> request.form("klokken") & "#))"
>>>> set rsh = Connhj.Execute(strSQL)


*Hver* gang der er bøvl med en sql-sætning er det første man skal
gøre at udskrive den resulterende sql-sætning. Altså response.write
strSQL (evt. + response.End) umiddelbart før strSQL

Teknikken er beskrevet her: <http://asp-faq.dk/article/?id=41>.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørn Andersen (16-10-2003)
Kommentar
Fra : Jørn Andersen


Dato : 16-10-03 16:27

On Wed, 15 Oct 2003 11:54:21 +0200, "Jens Gyldenkærne Clausen"
<jc@dmf.dk> wrote:

>*Hver* gang der er bøvl med en sql-sætning er det første man skal
>gøre at udskrive den resulterende sql-sætning. Altså response.write
>strSQL (evt. + response.End) umiddelbart før strSQL

Du mener nok *efter* strSql

>Teknikken er beskrevet her: <http://asp-faq.dk/article/?id=41>.

--
Jørn Andersen,
Brønshøj

Chrisser (15-10-2003)
Kommentar
Fra : Chrisser


Dato : 15-10-03 11:00

Peter Konner wrote:
> Naturligvis - min fejl (det blev lidt sent i går) !
>
> Der er tale om MS Access, og omkring linie 185 ser det således ud
> (linie 185
> er markeret med >>> til venstre):

Linie 185 er altså din åbning af dit recordset.
Du initialiserer og åbner dit recordset i samme linie *og* i en if-sætning
- hvor lukker du det ?


Normalt initialiserer jeg recordsets ét sted, åbner og lukker dem der hvor
jeg skal bruge dem, og nedlægger dem til sidst - det minimerer risikoen for
fejl.
Hvis du initialiserer recordsettet for sig selv, og åbner det for sig selv
vil det se nogenlunde sådan ud:

Set rsh = Server.CreateObject("ADODB.RecordSet")
rsh.Open sql, Connection, adOpenStatic, adLockReadOnly

Og oprydning:
rsh.Close
Set rsh = Nothing

Prøv at skil disse to ting ad og find ud af hvornår du lukker dit recordset
og hvor du lukker og rydder op...

[snip kode]

Mvh
Chrisser



Peter Konner (15-10-2003)
Kommentar
Fra : Peter Konner


Dato : 15-10-03 20:20

"Chrisser" <cbjDetteFjernes@egdatainform.dk> skrev i en meddelelse
news:bmj5pa$3rc$1@sunsite.dk...
> Peter Konner wrote:
> > Naturligvis - min fejl (det blev lidt sent i går) !
> >
> Linie 185 er altså din åbning af dit recordset.
> Du initialiserer og åbner dit recordset i samme linie *og* i en if-sætning
> - hvor lukker du det ?

Jeg har separate #includes til både åbning og oprydning i recordsets og
connections, så strukturen burde være i orden her

Mvh
Peter



Chrisser (16-10-2003)
Kommentar
Fra : Chrisser


Dato : 16-10-03 07:33

Peter Konner wrote:
>> Linie 185 er altså din åbning af dit recordset.
>> Du initialiserer og åbner dit recordset i samme linie *og* i en
>> if-sætning - hvor lukker du det ?
>
> Jeg har separate #includes til både åbning og oprydning i
> recordsets og connections, så strukturen burde være i orden her

Det er OK hvad angår din connection men du skal passe på i forbindelse med
recordsets da der er for meget der kan gå galt.
Det anbefales vist af de fleste bøger at man instansierer og åbner sit
recordset der hvor man skal bruge det, og lukker/nedlægger det så snart man
er færdig med at bruge det ( og altid inden for samme kodeblok - ikke på
tværs af if-sætninger eller andet ). Dette også for ikke at belaste
databasen.

Jeg er ret nysgerrig for at se præcis hvad du gør i dine includes og hvor du
inkluderer dem.

Chrisser



Jens Gyldenkærne Cla~ (17-10-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-10-03 10:28

Jørn Andersen skrev:

>> *Hver* gang der er bøvl med en sql-sætning er det første man
>> skal gøre at udskrive den resulterende sql-sætning. Altså
>> response.write strSQL (evt. + response.End) umiddelbart før
>> strSQL
>
> Du mener nok *efter* strSql

Nej, før Conn.Execute strSQL (men efter den sidste
strSQL = strSQL & ...)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste