Προβλήματα με ASP, ADO
Posted: Sun Jul 29, 2007 1:25 pm
Θέλω μέσα από μια asp εφαρμογή να κατασκευάζω μια βάση σε access την οποία στη συνέχεια θα διαχειρίζομαι μέσα από τον asp κώδικά μου. Θέλω να έχω 2 πίνακες (Μaterials, Orders) στη βάση.
Μετά από κάμποσο ψάξιμο έχω καταλήξει σε αυτό τον κώδικα:
Στο 1ο σημείο "fso.DeleteFile( sDatabaseToCreate)" μου βγάζει
όταν πάει να κάνει τη διαγραφή.
Στο 2ο σημείο Dim kyForeign 'As ADOX.Key μου βγάζει
Όταν βγάζω από το σχόλιο την από κάτω γραμμή 'set kyForeign = New ADOΧ.key μου βγάζει
ενώ αν βγάζω το σχόλιο από τη γραμμή Dim kyForeign 'As ADOX.Key επιστρέφει
Κυρίως το 2ο σημείο με ενδιαφέρει περισσότερο. Σε αντίστοιχους κώδικες στο internet είχε αυτές τις δηλώσεις χωρίς σχόλια αλλά σε εμένα δε δουλεύουν. Τι να κάνω;
Έχω έκδοση ΑDO 2.8 και υποστηρίζεται ADOX, τουλάχιστον αυτά τα αποτελέσματα μου επέστρεψε το ακόλουθο script.
Μετά από κάμποσο ψάξιμο έχω καταλήξει σε αυτό τον κώδικα:
Τα προβλήματα που έχω τώρα είναι στα σημεία με κόκκινο.Κώδικας wrote:<%@LANGUAGE="VBSCRIPT"%> 'CODEPAGE="1252"%>
<html>
<head>
<title>Create a New Microsoft Access Database with ASP</title>
</head>
<body>
<!--#include file ="Includes/adovbs.inc"-->
<%
Dim sDatabaseName
sDatabaseName = "C:\Inetpub\wwwroot\repository\repositoryAutomatic.mdb"
Sub CreateAccessDatabase(sDatabaseToCreate)
'if this fails, the function exits immediately
Set fso = Server.CreateObject("Scripting.FileSystemObject")
' does the destination file exist already?
response.write( "Checking existence of " & sDatabaseToCreate & "...<br>")
IF fso.FileExists(sDatabaseToCreate) THEN
fso.DeleteFile( sDatabaseToCreate)
response.write( "Deleted file " & sDatabaseToCreate)
END IF
SET fso = nothing
Dim catNewDB ' As ADOX.Catalog
Set catNewDB = Server.CreateObject("ADOX.Catalog")
catNewDB.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sDatabaseToCreate & _
";Jet OLEDB:Engine Type=5;"
Set catNewDB = Nothing
response.write("Database has been created successfully!<br>")
'open the existing database and add the tables
Dim catDB ' As ADOX.Catalog
Set catDB = Server.CreateObject("ADOX.Catalog")
' Open the catalog
catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sDatabaseToCreate
' Create the "MATERIALS" table
Dim mat ' As ADOX.Table
Set mat = Server.CreateObject("ADOX.Table")
mat.Name = "MATERIALS"
' Now add the columns of the table
With mat
' Create fields and append them to the
' Columns collection of the new Table object.
With .Columns
.Append "M_CODE", adVarWChar, 5
.Append "M_DESCR", adVarWChar, 20
.Append "M_QUANTITY", adInteger, 4
.Append "M_MIN_QUANTITY", adInteger, 4
.Append "M_UNIT_PRICE", adInteger, 6
End With
.keys.append "PK_M_CODE", 1, "M_CODE"
End With
' Add the new Table to the Tables collection of the database.
catDB.Tables.Append mat
Set col = Nothing
Set mat = Nothing
'<-------------------------------------------------------------->
'<-------------------------------------------------------------->
' Create the "ORDERS" table
Dim ord 'As ADOX.Table
Set ord = Server.CreateObject("ADOX.Table")
Dim kyForeign 'As ADOX.Key
'set kyForeign = New ADOΧ.key
ord.Name = "ORDERS"
With ord
' Create fields and append them to the
' Columns collection of the new Table object.
With .Columns
.Append "M_CODE", adVarWChar, 5
.Append "O_NUM", adInteger, 4
.Append "O_QUANTITY", adInteger, 4
.Append "O_DATE", adDate
End With
'.keys.append "FK_M_CODE", 1, "M_CODE"
'.keys.append "PK_O_NUM", 1, "O_NUM"
End With
' Define the foreign key
kyForeign.Name = "MO_CODE"
kyForeign.Type = adKeyForeign
kyForeign.RelatedTable = "MATERIALS"
kyForeign.Columns.Append "M_CODE"
kyForeign.Columns("M_CODE").RelatedColumn = "M_CODE"
kyForeign.UpdateRule = adRICascade
' Append the foreign key
ord.Keys.Append kyForeign
' Add the new Table to the Tables collection of the database.
catDB.Tables.Append ord
Set col = Nothing
Set ord = Nothing
Set catDB = Nothing
End Sub
CreateAccessDatabase sDatabaseName
%>
</body>
</html>
Στο 1ο σημείο "fso.DeleteFile( sDatabaseToCreate)" μου βγάζει
Code: Select all
Error Type:
Microsoft VBScript runtime (0x800A0046)
Permission denied
Στο 2ο σημείο Dim kyForeign 'As ADOX.Key μου βγάζει
Code: Select all
Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: ''
Code: Select all
Error Type:
Microsoft VBScript runtime (0x800A01FA)
Class not defined: 'ADOΧ'
Code: Select all
Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
Dim kyForeign As ADOX.Key
-------------^

Έχω έκδοση ΑDO 2.8 και υποστηρίζεται ADOX, τουλάχιστον αυτά τα αποτελέσματα μου επέστρεψε το ακόλουθο script.
Code: Select all
<%@LANGUAGE=VBSCRIPT%>
<%
ON ERROR RESUME NEXT
SET ourObj = Server.CreateObject( "ADODB.Connection")
Response.Write "<BR>ADODB "
IF ERR <> 0 THEN
Response.Write "is not "
ELSE
Response.Write "version " + ourObj.Version + " is "
END IF
Response.Write "installed on this machine"
Err.Clear
SET ourObj = Server.CreateObject( "ADOX.Catalog")
Response.Write "<BR>ADOX is "
IF ERR <> 0 THEN
Response.Write "not "
END IF
Response.Write "installed on this machine<BR>"
Err.Clear
SET ourObj = nothing
%>