Toon posts:

[ASP]Insert into werkt niet ;Relaties vastleggen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi tweakers,

Zit met het volgende probleem:

Ik wil een record toevoegen aan de tabel Medewerkers echter deze is gelinked aan o.a de tabel Afdelingssamenstelling ( genormaliseerd database model ) via een one to many relatie.

In de tabel Medewerker staat namelijk het veld Afd_id (many ) die gelinked is met Afd_id uit afdelingssamenstelling ( primary key , one)

ik heb het volgende stukje code gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<%@ Language=VBScript %>
<% Option Explicit 

Dim strSQL,geboortesamenvoeging,indienstsamenvoeging

Dim objConn
Set objConn = Server.Createobject ("ADODB.Connection")
    objConn.ConnectionString ="DSN=Organisatie"
    objConn.Open
%>
<!--#include virtual="/adovbs.inc"-->


<%
geboortesamenvoeging = Request.Form("Med_gebdat1") & Request.Form("Med_gebdat2") & Request.Form("Med_gebdat3")
indienstsamenvoeging = Request.Form("Med_indienst1") & Request.Form("Med_indienst2") & Request.Form("Med_indienst3")

StrSQL = "Insert Into Medewerker(Med_nr,afd_id) VALUES ('" & Request.Form("med_nr") & "','" & Request.Form("afd_id") & "');"

objConn.Execute strSQL

Response.Write Request.Form("comments")

OBJCONN.Close
Set OBJConn = Nothing
%>
<html>

<head>
<link rel="stylesheet" type="text/css" href="http://localhost/ORG/org.css"> 
<title>Medewerker toevoegen</title>
</head>

<Body>

Thank you for registering.


</BODY>
</HTML>


Echter dit levert de volgende foutmelding op:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] You cannot add or change a record because a related record is required in table 'Afdelingssamenstelling'.
/ORG/HRM/Medewerkertoevoeg.asp, line 20


Ik word hier helemaal gek , de afd_id die ingevoegd word aan medewerker.Afd_id bestaat gewoon in Afdelingssamenstelling.Afd_id dus ik zie het probleem niet.
Hoe kan ik dit oplossen?

[ Voor 23% gewijzigd door Verwijderd op 24-03-2006 12:07 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Vervang objConn.Execute strSQL eens door
response.Write strSQL
response.End

End vergelijk die output eens?

Daarnaast hoort dit SQL Statement in regel 18 te crashen omdat die fout is, dus weet je zeker dat daar het probleem zit?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
waarom is die fout??


zie het al kwam door het editen , maar als die het doet geeft die die foutmelding

[ Voor 69% gewijzigd door Verwijderd op 24-03-2006 12:04 ]


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Is afd_id een string of een integer, in het laatste geval is je query inderdaad fout omdat je de database de afd_id als string voert.

Verwijderd

Lijkt me niet toch? Je mag iig met sql alle waarden tussen quotes zetten, ook bij integers (of ik moet helemaal gek zijn).

@Frank: druk de waarde van StrSQL eens af zoals Gorgi_19 al aangeeft...

Je probeert een afd_id in te voeren die in de andere tabel niet bestaat, gezien de foutmelding.

[ Voor 28% gewijzigd door Verwijderd op 24-03-2006 12:57 ]


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 23-02 11:33

sopsop

[v] [;,,;] [v]

Je weet trouwens dat je met deze constructie ook vatbaar bent voor SQL-injection?

Verwijderd

boppert schreef op vrijdag 24 maart 2006 @ 13:22:
Je weet trouwens dat je met deze constructie ook vatbaar bent voor SQL-injection?
Daar is hij al vaker op gewezen hoor :)

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 23-02 11:33

sopsop

[v] [;,,;] [v]

Verwijderd schreef op vrijdag 24 maart 2006 @ 13:23:
[...]

Daar is hij al vaker op gewezen hoor :)
Helemaal leuk is dat volgens mij al zijn code die hij in ASP heeft geschreven hier inmiddels online te bewonderen is, wat het injecteren een peuleschil maakt. Even Googlen op zijn (user)naam en hebbes. a.d.h.v. de queries in zijn talloze posts zijn tabelnamen heel makkelijk terug te te vinden.

Verwijderd

boppert schreef op vrijdag 24 maart 2006 @ 13:32:
[...]
Helemaal leuk is dat volgens mij al zijn code die hij in ASP heeft geschreven hier inmiddels online te bewonderen is, wat het injecteren een peuleschil maakt. Even Googlen op zijn (user)naam en hebbes. a.d.h.v. de queries in zijn talloze posts zijn tabelnamen heel makkelijk terug te te vinden.
offtopic:
:o 8) Ik heb inderdaad al grote lappen code voorbij zien komen :*)

Zo ben ik echter niet O-)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

boppert schreef op vrijdag 24 maart 2006 @ 13:32:
[...]
Helemaal leuk is dat volgens mij al zijn code die hij in ASP heeft geschreven hier inmiddels online te bewonderen is, wat het injecteren een peuleschil maakt. Even Googlen op zijn (user)naam en hebbes. a.d.h.v. de queries in zijn talloze posts zijn tabelnamen heel makkelijk terug te te vinden.
Zo zijn er wel meer leuke dingen, zoals F5 afvangen e.d., maar da's allemaal offtopic :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Verwijderd schreef op vrijdag 24 maart 2006 @ 12:55:
Lijkt me niet toch? Je mag iig met sql alle waarden tussen quotes zetten, ook bij integers (of ik moet helemaal gek zijn).
Ik was er van overtuigd dat je integers niet tussen quotes mocht zetten; maar na prutsen op Oracle, PGsql en MySQL kom ik daar maar op terug.

Hoe dan ook; wat is de _exacte_ inhoud van afd_id bij medewerkers en het record welk daar bij zou moeten in de afdelingen tabel?
Pagina: 1