Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ASP] problemen in query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heren en/of dames,

Ik had altijd een applicatie in ASP in samenwerking met MsAccess, nou ben ik dit aan het migreren naar Oracle. Nu loop ik tegen het volgende probleem aan.


De code ziet er als volgt uit:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
    If Request.QueryString("status")=1 Then
        Dim fAANHEF, fINIT, fVOOR, fTUSSEN, fACHTER, fLOKATIE, fTST, fMOB, fPRIVE, fBYZ, fAFB
        If Request.Form("selAANHEF") <> "" Then
            fAANHEF = Request.Form("selAANHEF")
        Else
            fAANHEF = ""
        End If
        If Request.Form("varINIT") <> "" Then
            fINIT = Request.Form("varINIT")
        Else
            fINIT = ""
        End If
        If Request.Form("varVNAAM") <> "" Then
            fVOOR = Request.Form("varVNAAM")
        Else
            fVOOR = ""
        End If
        If Request.Form("varTUSSEN") <> "" Then
            fTUSSEN = Request.Form("varTUSSEN")
        Else
            fTUSSEN = ""
        End If
        If Request.Form("varANAAM") <> "" Then
            fACHTER = Request.Form("varANAAM")
        Else
            fACHTER = ""
        End If
        If Request.Form("selLOKATIE")="" And NOT IsNull(Request.Form("varLOKATIE")) Then
            fLOKATIE = Request.Form("varLOKATIE")
        ElseIf Request.Form("selLOKATIE")<>"" Then
            fLOKATIE = Request.Form("selLOKATIE")
        Else
            fLOKATIE = ""
        End If
        If Request.Form("varTST")<>"" Then
            fTST = Request.Form("varTST")
        Else
            fTST = "Null"
        End If
        If Request.Form("varMOB")<>"" Then
            fMOB = Request.Form("varMOB")
        Else
            fMOB = "Null"
        End If
        If Request.Form("varPRIVE")<>"" Then
            fPRIVE = Request.Form("varPRIVE")
        Else
            fPRIVE = ""
        End If
        If Request.Form("chkBYZ") = "on" Then
            fBYZ = True
        Else
            fBYZ = 0
        End If
open_database
        strSQL="UPDATE " & strTABLE & " SET Aanspreek='" & fAANHEF & "', Initialen='" & fINIT & _ 
            "', VoorNaam='" & fVOOR & "', Tussen='" & fTUSSEN & "', AchterNaam='" & fACHTER & _ 
            "', Lokatie='" & fLOKATIE & "', Telefoon=" & fTST & ", Mobiel=" & fMOB & ", Prive='" & fPRIVE  & _ 
            "', Bijzonder=" & fBYZ &_ 
      " WHERE ID_PERSOON=" & Request.Form("ID")
    Set conn = Session.Contents.Item("Connection").Execute(strSQL)
        conn.Close
        Set conn = Nothing
close_database


Ik heb dus niets veranderd aan de SQL en toch gaat er iets niet goed, misschien dat er een logische verklaring voor is, maar ik hem hem niet kunnen vinden.
Mijn eerste gedachten was dat de fout hem zat in WHERE ID_PERSOON=" & Request.Form("ID"), maar toen ik het veranderde in ID_PERSOON=1 werkte het nog steeds niet, en de foutmelding bleef het zelfde.

Dit was wat ik op internet vond:
Well, the ORA- errors can all be found in the Error Message guide (full documentation can be found on technet.oracle.com). The error you list is saying that a trigger named LOG_ERRORS_TRIG owned by the SYSTEM ID is invalid because there is an invalid table name being referenced in that trigger. You need to find that trigger code and go from there.
Maar de tabelnaam klopt wel, het veld ID_PERSOON ook, vraag me alleen af waar hij TRG vandaan haalt, het enige wat ik mij kan voorstellen is dat het voor trigger zal staan.

Iemand enig idee om mij opweg te helpen???

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Ik stel voor dat je die query gewoon met Toad eens probeert uit te voeren. Die melding klinkt mij aslof er op die table een trigger staat die de mist in gaat.

Let trouwens ajb op SQL injection. Rechtstreeks form variabelen in je query zetten is een enorme no-no. Dus stap ajb over op parameterized queries.

[ Voor 15% gewijzigd door Hydra op 28-04-2008 14:37 ]

https://niels.nu


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 19-11 12:55

Janoz

Moderator Devschuur®

!litemod

Je zou eens kunnen beginnen met het neerzetten van de foutmelding. Dat maakt het voor anderen wel ietsje makkelijker om eens te kijken wat nu uberhaupt het probleem zou kunnen zijn. 'Er gaat iets neit goed' is niet echt een uitgebreide probleem omschrijving....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • pedorus
  • Registratie: Januari 2008
  • Niet online
De foutmelding rendert niet, maar staat er wel:
Verwijderd schreef op maandag 28 april 2008 @ 14:27:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Oracle][ODBC][Ora]ORA-04098: trigger 'ROBERT.TBLTELNUM_ID_PERSOON_TRG' is invalid and failed re-validation

/aldelfoon/af_edit.asp, line 93
Niet echt een ASP-probleem dus.

Vreemde constructies trouwens, wat is er nu anders aan de situatie selAANHEF=="" wat aparte afhandeling behoefd? Daarnaast is er veel kans op SQL-injection idd.

Ik zou het eerst eens overnieuw proberen met parameterized queries.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • joppybt
  • Registratie: December 2002
  • Laatst online: 22:21
Tsja, de foutmelding lijkt me toch heel duidelijk:
trigger 'ROBERT.TBLTELNUM_ID_PERSOON_TRG' is invalid
ofwel: Oracle kan de trigger niets eens compileren/valideren.

Het ligt dus helemaal niet aan je ASP code: elk update statement zou fout gaan.
Wat doet je trigger?

[ Voor 3% gewijzigd door joppybt op 28-04-2008 18:39 ]


  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 19-11 08:48
Hoe heb je je database gemigreerd van Access naar Oracle? Met 1 of ander tool? Ik kan me voorstellen dat "autonumber" velden in Access worden omgezet naar een trigger in Oracle. Dan heb je dus inderdaad een trigger op de tabel staan (die waarschijnlijk refereert aan een sequence), zonder dat je die zelf hebt gecreëerd.

Check inderdaad de code van de trigger. Doe een
ALTER TRIGGER ROBERT.TBLTELNUM_ID_PERSOON_TRG RECOMPILE en daarna SHOW ERRORS om de foutmelding bij het recompilen te zien.

Whatever


Verwijderd

Topicstarter
Er stond inderdaad een trigger in de Oracle tabel, hierin werd verwezen naar een Access tool oid. De tabellen zijn idd overgezet met een tool (van Oracle trouwens, Migration Workbench)
Dankjewel Digik-oz en joppybt

Wel vreemd dat Migration Workbench daar niet op let, het is namelijk een tool om .mdb bestanden te migreren naar Oracle, maar affijn :)

Danku!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
En wat heb je nu gedaan dan?

Zo te zien is het een omzetting van een autonumber, want dat ondersteunt Oracle niet van zichzelf. Ik kan mij niet voorstellen dat inserts blijven werken als je de trigger wegkeilt.

Migration Workbench of welke migratietool dan ook kan geen beslissingen voor jou nemen, het is wel de bedoeling dat je van beide domeinen (Access en Oracle) voldoende afweet om een migratie te kunnen uitvoeren.

offtopic:
Als je trouwens toch aan het migreren bent, is het misschien een idee om naar een moderner web platform te migreren dan asp (3.0?) :D

[ Voor 15% gewijzigd door bigbeng op 29-04-2008 09:52 ]

Pagina: 1