/ 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
Ingen dupletter
Fra : Gert Simonsen


Dato : 29-06-04 18:20

Hej

Jeg har en Accesdatabase med et felt hvor jeg ikke tillader dupletter.
Følgende fejlmeddelse kommer hvis der er dupletter:

Microsoft JET Database Engine error '80040e21'

The changes you requested to the table were not successful because they
would create duplicate values in the index, primary key, or relationship.
Change the data in the field or fields that contain duplicate data, remove
the index, or redefine the index to permit duplicate entries and try again.


Hvad kan jeg gøre for at undgå denne fejlmeddelse, jeg vil jo hellere blive
smidt over på en anden side hvor jeg f.eks. kan skrive: du skal omdøbe din
fil til et andet navn bla bla.........!

Hilsen Gert



 
 
FFunky Jensen (29-06-2004)
Kommentar
Fra : FFunky Jensen


Dato : 29-06-04 18:40

"Gert Simonsen"
>
> Jeg har en Accesdatabase med et felt hvor jeg ikke tillader dupletter.
....
> Hvad kan jeg gøre for at undgå denne fejlmeddelse, jeg vil jo hellere
blive
> smidt over på en anden side hvor jeg f.eks. kan skrive: du skal omdøbe din
> fil til et andet navn bla bla.........!
>
> Hilsen Gert
>
Lav en forespørgsel der søger på den værdi der evt. kan blive dubleret, hvis
der findes en i forvejen så lav en redirect.

strSQL = "Select tblPerson.initial From tblPerson Where tblPerson.initial
='" & strInitial & "';"
rst.Open strSQL, conn
if rst.bof and rst.eof then
' DoYourStuff
else
response.redirect("Fejl.asp")
end if




Gert Simonsen (30-06-2004)
Kommentar
Fra : Gert Simonsen


Dato : 30-06-04 10:05

> Lav en forespørgsel der søger på den værdi der evt. kan blive dubleret,
hvis
> der findes en i forvejen så lav en redirect.
>
> strSQL = "Select tblPerson.initial From tblPerson Where tblPerson.initial
> ='" & strInitial & "';"
> rst.Open strSQL, conn
> if rst.bof and rst.eof then
> ' DoYourStuff
> else
> response.redirect("Fejl.asp")
> end if
Kan man ikke lave et eller andet med:
on error response write...........???
Ja ja....jeg ved det godt, det er der sikkert ikke noget der hedder, men
noget i den retning.

Hilsen Gert



Chrisser (30-06-2004)
Kommentar
Fra : Chrisser


Dato : 30-06-04 10:41

Gert Simonsen wrote:
> Kan man ikke lave et eller andet med:
> on error response write...........???
> Ja ja....jeg ved det godt, det er der sikkert ikke noget der
> hedder, men noget i den retning.

Det kan man godt i ASP.

Prøv at eksperimenter lidt med:
<%
On Error Resume Next
Conn.Execute strQuery ' dette skal erstattes af dit eget kode.
if Err.Number<>0 then
Response.write "Fejl nummer " & Err.Number
Response.write ": " & Err.Description
end if
%>

Det du skal vide om linien "On Error Resume Next" er:

Du sætter den ind lige før det du regner med kan gå galt, i dit tilfælde før
du fyrer din sql-sætning af.
Det den rent faktisk gør er så at eksekveringen af koden fortsætter fra
første statement EFTER det der gik galt - her kan du så teste på fejlnummer
og udskrive hvad du vil.


Chrisser



Gert Simonsen (01-07-2004)
Kommentar
Fra : Gert Simonsen


Dato : 01-07-04 10:27

> <%
> On Error Resume Next
> Conn.Execute strQuery ' dette skal erstattes af dit eget kode.
> if Err.Number<>0 then
> Response.write "Fejl nummer " & Err.Number
> Response.write ": " & Err.Description
> end if
> %>
>
Jeg syntes ikke rigtigt jeg kan få det til at virke.
Her er min kode:

'Store extra info about upload to database

RS.AddNew
RS("UploadDT") = Date()
RS("Description") = Form.Texts.Item("Description")
RS("SourceFileName") = FileField.FileName
RS("DestFileName") = DestinationFileName
RS("DataSize") = FileField.Length
RS("username") = Form.Texts.Item("username")

On Error Resume Next
RS.Update ' dette skal erstattes af dit eget kode.
if Err.Number<>0 then
Response.write "Fejl nummer " & Err.Number
Response.write "Du skal omdøbe dit filnavn til et andet navn......! "
end if

end if
Next

Nu skriver den rigtigt nok "Du skal omdøbe dit filnavn til et andet
navn......! "
men scriptet kører viderer, som om intet var hændt.



Hilsen Gert Simonsen



Chrisser (01-07-2004)
Kommentar
Fra : Chrisser


Dato : 01-07-04 10:46

Gert Simonsen wrote:
> On Error Resume Next
> RS.Update ' dette skal erstattes af dit eget kode.
> if Err.Number<>0 then
> Response.write "Fejl nummer " & Err.Number
> Response.write "Du skal omdøbe dit filnavn til et andet
> navn......! " end if
>
> end if
> Next
>
> Nu skriver den rigtigt nok "Du skal omdøbe dit filnavn til et andet
> navn......! "
> men scriptet kører viderer, som om intet var hændt.

Det er netop det som resume next gør

Hvis du vil have den til at gøre noget andet skal du også putte det ind i
din fejlbehandling, for eksempel en redirect til en anden side, eller en
tilbageknap brugeren kan trykke på, og når du har skrevet det ud du nu vil
skal du selv stoppe eksekveringen med response.end


Mvh
Chrisser






Gert Simonsen (01-07-2004)
Kommentar
Fra : Gert Simonsen


Dato : 01-07-04 12:39

> Det er netop det som resume next gør
He he....nå ja!

> Hvis du vil have den til at gøre noget andet skal du også putte det ind i
> din fejlbehandling, for eksempel en redirect til en anden side, eller en
> tilbageknap brugeren kan trykke på, og når du har skrevet det ud du nu vil
> skal du selv stoppe eksekveringen med response.end
>
Yep - en redirect det var måske noget jeg kunne bruge.....hmmm? hvor er det
nu lige den skal sættes ind?

Hilsen Gert Simonsen



Gert Simonsen (01-07-2004)
Kommentar
Fra : Gert Simonsen


Dato : 01-07-04 13:13

> Yep - en redirect det var måske noget jeg kunne bruge.....hmmm? hvor er
det
> nu lige den skal sættes ind?

Har prøvet at lege lidt med det....!
Det er vel noget i denne stil? det lader da ihvertfald til at virke.

On Error Resume Next
RS.Update ' dette skal erstattes af dit eget kode.
if Err.Number<>0 then
'Response.write "Fejl nummer " & Err.Number
'Response.write "Du skal omdøbe dit filnavn til et andet navn......! "
Response.Redirect "nyt_filnavn.asp"
response.end
end if


Hilsen Gert Simonsen



Chrisser (01-07-2004)
Kommentar
Fra : Chrisser


Dato : 01-07-04 13:49

Gert Simonsen wrote:
> Har prøvet at lege lidt med det....!
> Det er vel noget i denne stil? det lader da ihvertfald til at virke.
>
> On Error Resume Next
> RS.Update ' dette skal erstattes af dit eget kode.
> if Err.Number<>0 then
> 'Response.write "Fejl nummer " & Err.Number
> 'Response.write "Du skal omdøbe dit filnavn til et andet
> navn......! " Response.Redirect "nyt_filnavn.asp"
> response.end
> end if

Fuldstændig - din Respone.End er dog overflødig ( jeg ved godt jeg vist fik
formuleret mig lidt anderledes længere oppe, men enten en Response.Redirect
eller en knap/link+Response.End )

Hvis du har åbne connections /recordsets bør du lukke disse ved fejl, det
kan du jo gøre lige inden du redirecter.

Mvh
Chrisser



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste