Ik heb jullie hulp even nodig bij het oplossen van een lastig probleem. Wij zijn namelijk recentelijk verhuist van server, waardoor deze fout is ontstaan.
De nieuwe server is identiek aan de oude. Dit is wat er op draait: Win2003 server, IIS 6.0, ASP.NET 2.0 en MS Access 2000.
Het gaat om een webapplicatie die bestanden in leest en opslaat in de database. Het in te lezen bestand is een tekst bestand die de data bevat, gescheiden door tabs. Het bestand wordt eerst geupload naar de server (dit gaat nog goed). Daarna wordt het tekst bestand uitgelezen, hier gaat het echter fout.
Het te lezen tekst bestand:
Het uitlezen van het bestand gebeurt door onderstaande code:
Op regel 14 wordt de volgende foutmelding gegeven:
De foutmelding:
De code heeft altijd goed gewerkt op onze oude server. Helaas kunnen wij deze nu niet meer gebruiken. Ik heb het vermoeden dat er nog een OLE DB driver mist om het tekst bestand op deze manier uit te lezen. Kan iemand mij hier meer over vertellen? Ik kan er zelf niks over vinden op internet.
Wel heb ik onderstaande code gevonden, die overeen komt met de code die wij gebruiken. Hier wordt echter geen melding bij gegeven dat extra componenten nodig zijn voor de uitvoering van deze code.
Heeft iemand een idee hoe dit opgelost kan worden?
De nieuwe server is identiek aan de oude. Dit is wat er op draait: Win2003 server, IIS 6.0, ASP.NET 2.0 en MS Access 2000.
Het gaat om een webapplicatie die bestanden in leest en opslaat in de database. Het in te lezen bestand is een tekst bestand die de data bevat, gescheiden door tabs. Het bestand wordt eerst geupload naar de server (dit gaat nog goed). Daarna wordt het tekst bestand uitgelezen, hier gaat het echter fout.
Het te lezen tekst bestand:
code:
1
2
3
| 20080801 20081001 "Riwald Recycling BV" "DE1350_164303" "Riwald Recycling BV" "NLD" "Submarine/Demolishing" "R04" "W" "I" 2008-53557 Beschikking EU-verordening 259/93; Beschikking DE1350/164303 inzake de invoer van Submarine/Demolishing, naar Riwald Recycling BV in NLD door Riwald Recycling BV te DEU. Weigering voor transport in de periode van 01-07-2008 tot 01-12-2008 20080901 20081001 "Dusseldorp Gevaarlijk Afval" "NL204460" "Remondis Production Gmbh" "DEU" "Waterige wasvloeistoffen" "D10" "T" "U" 2008-54553 Beschikking EU-verordening 259/93; Beschikking NL204460 inzake de uitvoer van Waterige wasvloeistoffen, naar Remondis Production Gmbh in DEU door Dusseldorp Gevaarlijk Afval te NLD. Toestemming voor transport in de periode van 01-10-2008 tot 30-09-2009 20080801 20081001 "Riwald Recycling BV" "DE1350_164304" "Riwald Recycling BV" "NLD" "Sloopschip" "R04" "W" "I" 2008-53556 Beschikking EU-verordening 259/93; Beschikking DE1350/164304 inzake de invoer van Sloopschip, naar Riwald Recycling BV in NLD door Riwald Recycling BV te DEU. Weigering voor transport in de periode van 01-07-2008 tot 31-12-2008 |
Het uitlezen van het bestand gebeurt door onderstaande code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| set objImport = getImportList(iImportId) Set objConnection = CreateObject("ADODB.Connection") Set objRecordSet = CreateObject("ADODB.Recordset") objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & IMPORT_PATH & ";" & _ "Extended Properties=""text;HDR=NO;FORMAT=TabDelimited;FMT=TabDelimited""" 'response.write filename objRecordset.Open "SELECT * FROM [" & fileName & "]", _ objConnection, adOpenStatic, adLockOptimistic, adCmdText Response.Write("SELECT * FROM [" & fileName & "]" & "<br/>") Response.Write(objImport("Importveld_VeldNr") & "<br/>") objRecordSet.fields.item(1) |
Op regel 14 wordt de volgende foutmelding gegeven:
De foutmelding:
code:
1
2
3
4
5
| ADODB.Fields error '800a0cc1' Item cannot be found in the collection corresponding to the requested name or ordinal. /onderhoud/beschikkingen/import.asp, line 99 |
De code heeft altijd goed gewerkt op onze oude server. Helaas kunnen wij deze nu niet meer gebruiken. Ik heb het vermoeden dat er nog een OLE DB driver mist om het tekst bestand op deze manier uit te lezen. Kan iemand mij hier meer over vertellen? Ik kan er zelf niks over vinden op internet.
Wel heb ik onderstaande code gevonden, die overeen komt met de code die wij gebruiken. Hier wordt echter geen melding bij gegeven dat extra componenten nodig zijn voor de uitvoering van deze code.
code:
Bron: http://support.microsoft.com/kb/3265481
2
3
4
5
6
7
8
9
10
11
| ' Open Text ' If a text file (for example, TestFile.txt) is located at c:\somepath, where C is the drive, and where somepath is the folder that contains TestFile.txt, as follows: cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\somepath;" & _ "Extended Properties=""text;HDR=Yes;FMT=Delimited;"";" ' specify the file name in the SQL statement as follows: rst.Open "Select * From TextFile.txt", cnn, , , adCmdText |
code:
Bron: http://www.microsoft.com/.../qanda/jun05/hey0607.mspx1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| On Error Resume Next Const adOpenStatic = 3 Const adLockOptimistic = 3 Const adCmdText = &H0001 Set objConnection = CreateObject("ADODB.Connection") Set objRecordset = CreateObject("ADODB.Recordset") strPathtoTextFile = "C:\Scripts" objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strPathtoTextFile & ";" & _ "Extended Properties=""text;HDR=Yes;FMT=Delimited""" strFile = "City_Names.txt" objRecordset.Open "Select City, Count(City) AS CountOfCity FROM " & strFile & _ " GROUP BY City", objConnection, adOpenStatic, adLockOptimistic, adCmdText Do Until objRecordset.EOF Wscript.Echo objRecordset.Fields.Item("City"), objRecordset.Fields.Item("CountOfCity") objRecordset.MoveNext Loop |
Heeft iemand een idee hoe dit opgelost kan worden?