Ik ben hier voor mijn werk een script aan het schrijven (in ASP) om de data van een Access-database om te zetten naar een SQL-database, met een totaal andere structuur(!). Ik zal hieronder ff mijn source neerzetten, maar ik betwijfel of enig nut heeft, aangezien het waarschijnlijk zo goed als onmogelijk is om het te "snappen" als je de databases niet kent. Anyway, ik krijg een "exception occured"-error bij het draaien van dit script op de regel waar ik een update-query uitvoer op een record wat ik open heb staan dmv een recordset...dus ff in vereenvoudigde weergave:
Nou zou ik me kunnen voorstellen dat dat niet mag omdat je niet een veld kunt wijzigen waar je op dat moment de gegevens uit hebt gehaald via een select-query. Of is het zo dat de recordset eigenlijk een kopie maakt van de waardes en dat dus wel zo moeten kunnen? Of begrijp ik het helemaal verkeerd?
Waarschijnlijk niet zinvool, maar ik zal hier ff de hele source van mijn script posten:
code:
1
2
3
4
5
6
7
8
| rs.Open "SELECT * FROM MyTable "
while not rs.EOF
conn.execute_
"UPDATE TABLE SET Field = " & CInt(Val) & " WHERE Field=" & rs ("MyField")
rs.MoveNext
wend
rs.Close |
Nou zou ik me kunnen voorstellen dat dat niet mag omdat je niet een veld kunt wijzigen waar je op dat moment de gegevens uit hebt gehaald via een select-query. Of is het zo dat de recordset eigenlijk een kopie maakt van de waardes en dat dus wel zo moeten kunnen? Of begrijp ik het helemaal verkeerd?
Waarschijnlijk niet zinvool, maar ik zal hier ff de hele source van mijn script posten:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| <%@ Language=VBScript %>
<%Option Explicit%>
<%Response.Buffer=TRUE%>
<!--#include file = "Global.asa"-->
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%Dim sqlConn, sqlQuery, sqlRecSet, sqlRecSet2
Dim mdbConn, mdbConnStr, mdbRecSet
Dim reccount
reccount=0
Set sqlConn=Session("DBConn")
Set mdbConn = Server.CreateObject("ADODB.Connection")
mdbConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("Database/HeinData2000.mdb") & ";" & _
"Persist Security Info=False"
mdbConn.Open mdbConnStr
Set mdbRecSet = Server.CreateObject("ADODB.RecordSet")
Set sqlRecSet2= Server.CreateObject("ADODB.RecordSet")
Set sqlRecSet = Server.CreateObject("ADODB.RecordSet")
sqlConn.Execute "DELETE FROM Article"
mdbRecSet.Open _
"SELECT DISTINCT NC12, TypeNumber, mgrdescription, catdescription FROM qryTechnicalDataPer12NC ", mdbConn
while not mdbRecSet.EOF
sqlRecSet.Open _
"SELECT ID, MainGroup, SubGroup FROM Groups " & _
"WHERE MainGroup LIKE '" & mdbRecSet("mgrdescription") & "'" &_
" AND SubGroup LIKE '" & mdbRecSet("catdescription") & "'", sqlConn
if sqlRecSet.EOF then
Response.Write "Combination " & mdbRecSet("mgrDescription") & " - " & mdbRecSet("catDescription") & " not found..."
sqlRecset.Close
else
sqlQuery=_
"INSERT INTO Article (ProductItemId, ProductItemName, ProductGroup) " &_
"VALUES (" &_
"'" & mdbRecSet("Nc12") & "'," &_
"'" & mdbRecSet("TypeNumber") & "'," &_
" " & sqlRecSet("ID") & ")"
reccount=reccount+1
sqlConn.Execute SQLQuery
sqlRecSet.Close
end if
mdbRecSet.MoveNext
wend
mdbRecSet.Close
sqlRecSet.Open _
"SELECT ProductItemId FROM Article ", sqlConn
while not sqlRecSet.EOF
Dim tmpQuery
tmpQuery=_
"SELECT * FROM qryTechnicalDataPer12NC " &_
"WHERE NC12 LIKE '" & sqlRecSet("ProductItemID") & "'"
mdbRecSet.Open tmpQuery, mdbConn
Dim tmpRecCount
tmpRecCount=0
while not mdbRecSet.EOF
tmpRecCount=tmpRecCount+1
Dim tmpQuery2
tmpQuery2=_
"SELECT * FROM TechnicalElements " &_
"WHERE ElementByName = '" & mdbRecSet("fdfDescription") & "'"
sqlRecSet2.Open tmpQuery2, sqlConn
sqlConn.Execute _ <-------Deze regel geeft de foutmelding
"UPDATE Article SET " &_
"Element" & CStr(tmpRecCount) & "=" & sqlRecSet2("ID") &_
"WHERE ProductItemID LIKE '" & sqlRecSet("ProductItemID") & "'"
sqlRecSet2.Close
mdbRecSet.MoveNext
wend
mdbRecSet.Close
sqlRecSet.MoveNext
wend
sqlRecSet.Close
mdbConn.Close
set mdbConn=NOTHING
set mdbRecSet=NOTHING
set sqlRecSet=NOTHING
Response.Write "Conversion ready...inserted " & CStr(recCount) & " records into Article "
%>
</BODY>
</HTML> |