Toon posts:

[ASP] Database invoer bestaat al

Pagina: 1
Acties:
  • 38 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi.

Als ik een dubbele waarde probeer in te voeren in een database tabel via asp, krijg ik een lelijke serverfoutmelding. ALs ik die foutmelding krijg wil ik redirecten naar een andere page, waarin ik dan schrijf dat die input al bestaat

Als er geen input is, gebuik ik deze code:
<%
'Controleren of de bezoeker voorkomt. Zoniet, foutmelding weergeven
If (uitvoer.BOF) or (uitvoer.EOF) then
response.redirect "bezoekeropvragennietgevonden.asp"
end if
%>

Maar hoe doe je dit voor een dubbele waarde die je probeert in te voeren?

Soort fout:
Microsoft JET Database Engine (0x80004005)
De opgegeven wijzigingen aan de tabel zijn niet aangebracht omdat zij dubbele waarden zouden opleveren voor de index, primaire sleutel of relatie. Wijzig de gegevens in het veld of de velden die dubbele gegevens bevatten of definieer de index opnieuw.
/pashouderaanmelden.asp, line 15

[ Voor 26% gewijzigd door Verwijderd op 20-01-2005 16:41 ]


  • Tinoo
  • Registratie: Januari 2005
  • Laatst online: 09-01 16:14
Het eenvoudigst lijkt mij door een recordset te maken waarin de te schrijven waarde wordt opgevraagd, bestaat deze al ga dan naar die foutmelding, anders de waarde toevoegen.

Zoiets:
Visual Basic:
1
2
3
4
5
6
7
strSQL ="SELECT * FROM TABEL WHERE kolom=" & 1
rs.Open(strSQL)
if Not (rs.BOF and rs.EOF) Then
 document.redirect "Foutmelding.asp"
else
rs.Addnew
etc.
.

Verwijderd

Topicstarter
mmm. volges mij checkt ie nu toch alleen of er uberhaupt een input is? niet of het een dubbele wordt...

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15-05 14:52

mulder

ik spuug op het trottoir

beetje 1 + 1 = 2 ofniet?

als er al 1 is kun je dus dubbele verwachten

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
ja, en dubbele kan ie niet maken, dus als ie n fout geeft, wil ik n andere page..

Hoe doe je dat.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
De oplossing van Tinoo is wat je nodig hebt.
Even een beetje creatief zijn, hij geeft nu een globale oplossingsrichting aan, de rest is up to you.

Een andere oplossing is voor het uitvoeren van de insert de volgende regel opnemen:
VBScript:
1
On Error Resume Next


En na de insert zet je neer:
VBScript:
1
2
3
4
5
If Err.Number = <het errornummer voor jouw fout> Then
   Response.Redirect "Jouwfoutpagina.asp"
End If
'En niet te vergeten de zeer belangrijke regel:
On Error Goto 0 'hiermee zet je de On Error Resume Next weer uit


De zaken die tussen <> staan moet je zelf uitzoeken/aanpassen. Succes :)

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 20-04 14:47

Dutch_guy

WYSIWYG

Die oplossing van Tinoo gebruik ik ook altijd, werkt perfect en is precies wat je nodig hebt.

In combinatie met een stukje javascript kan je mooi meteen doorgeven aan de gebruiker dat de invoer al bestaat.

Pay peanuts get monkeys !


Verwijderd

Topicstarter
owja, ik begrijp die van tinoo nu...

Verwijderd

Topicstarter
Hoe moet ik m nu invoegen op dit script??

<%@ Language = VBscript %>
<%

'Haal de variabelen uit de querystring
barcode = Request.Form("barcode")

'Voer de gegevens van de persoon die we willen toevoegen in in de database
SQLTOEVOEGEN="INSERT INTO Aangemeld (Barcode"
SQLTOEVOEGEN=SQLTOEVOEGEN & ") VALUES ("
SQLTOEVOEGEN=SQLTOEVOEGEN & "'" & barcode & "')"

'Maak verbinding met de database
set verbinding = server.createobject("ADODB.Connection")
verbinding.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\Inetpub\wwwroot\discotheek.mdb"
verbinding.Execute SQLTOEVOEGEN

response.redirect "menu2.asp"

%>

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 20-04 14:47

Dutch_guy

WYSIWYG

Verwijderd schreef op donderdag 20 januari 2005 @ 17:57:
Hoe moet ik m nu invoegen op dit script??

<%@ Language = VBscript %>
<%

'Haal de variabelen uit de querystring
barcode = Request.Form("barcode")

'Voer de gegevens van de persoon die we willen toevoegen in in de database
SQLTOEVOEGEN="INSERT INTO Aangemeld (Barcode"
SQLTOEVOEGEN=SQLTOEVOEGEN & ") VALUES ("
SQLTOEVOEGEN=SQLTOEVOEGEN & "'" & barcode & "')"

'Maak verbinding met de database
set verbinding = server.createobject("ADODB.Connection")
verbinding.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\Inetpub\wwwroot\discotheek.mdb"
verbinding.Execute SQLTOEVOEGEN

response.redirect "menu2.asp"

%>
Je moet eerst even e.e.a. in de goede volgorde zetten, je doet nu een select en vervolgens ga je de connectie maken.

En je commentaar bij het ophalen van de barcode klopt niet, je haalt niets op uit de querystring.

In de post van Tinoo staat het bijna letterlijk wat je moet doen.

Pay peanuts get monkeys !


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:37

gorgi_19

Kruimeltjes zijn weer op :9

Ik gok dat je er met bovenstaande hints wel uit moet kunnen komen :) Eerst controleren of een invoer bestaat, dan pas gaan invoeren :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.