Avatar billede smiley2 Nybegynder
12. februar 2001 - 08:15 Der er 7 kommentarer og
2 løsninger

Exel i stedet for Access

Jeg har set et regneark fra MS Excel blive brugt som database i stedet for en database fra Access. Efter at kigge i ASP koden kan jeg konstatere at MS har en standard driver til DSN-Less forbindelser til Excel så vel som til Access.

Tager jeg fejl? er det ikke så simpelt?
Hvorddan opbygger man det i Excel? Hvorddan definerer man den primære nøgne og navne på kolonner?
Findes der nogen artikler om emnet?
Avatar billede frank_jensen Nybegynder
12. februar 2001 - 08:18 #1
Der er et udemærket eksempel på ODBC-adgang til opdatering og læsning af Excel-filer på http://support.microsoft.com/support/kb/articles/Q195/9/51.asp....
Avatar billede eagleeye Praktikant
12. februar 2001 - 08:19 #2
Jeg kan måske hjælpe lidt:

I din excel fil skal øverste række indeholde navnet på feltet.

        A                        B
1    Fornavn            Efternavn
2    Anders              Hansen
3    Erik                  Jørgensen

Du skal markere det område som skal kunne læses fra ASP. Det markede område skal så tildeles et navn.
Marker områder A1:B3, gå op i menuen Indsæt -> Navn .. -> Definer… 
Definer et navn eks.vis myRange.

Generelt undgå æøå i feltnavne og det Defineret navn.
-----

Du kan komme i kontakt med excel filen fra asp ved hjælp af dette:

Set myConn = Server.CreateObject(\"ADODB.Connection\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")

’Connect til Excel via ODBC driver. Angiv fil navnet, her hedder filen fil.xls
’DriverID=790 betyder Excel97
myConn.Open \"Driver={Microsoft Excel Driver (*.xls)};READONLY=FALSE;DBQ=\"&Server.MapPath(\"fil.xls\")&\";DriverID=790\"

’Du kan skrive * for at vælge alle felter, eller feltnavne for at vælge nogle udvalgte (Fornavn, Efternavn)
strSQL = \"SELECT * FROM myRange\"

’Hent data fra excel.
rs.Open strSQL,myConn

’Flyt til første record
rs.movefirst
’Udskriv alle record. EOF End of File, BOF Begining of File.
’Udskriv kun hvis der er noget i excel filen eller indtil alle er udskrevet
while not(rs.EOF OR rs.BOF)
  ’Udskriv navn
  Response.Write \"<br>Navn fra Excel filen : \" & rs(\"Fornavn\") & \" \" & rs(\"Efternavn\")
  ’Flyt til næste record
  rs.MoveNext
Wend

’Rydder pænt op efter os
rs.Close
myConn.Close
set rs=nothing
set myConn=nothing

Jeg ahr dog ikke fundet ud af hvordan man indsætter i exceal filen uden at lave en helt ny fil!?!
Avatar billede frank_jensen Nybegynder
12. februar 2001 - 08:20 #3
Problemet er, at der KUN kan være EEN bruger på Excel-filer, hvor der på Access siges at kunne være op til 255 brugere (men når man bruger ODBC og Jet-Engine, skoder begge dele...  Sidder selv og udvikler Excel-løsning p.t.

For at se en DSN-Less løsning prøv
www.microsoft.com/TechNet/iis/Tips/aspexcel.asp
Den gennemgår en simpel læsning af excel-ark...
Avatar billede frank_jensen Nybegynder
12. februar 2001 - 08:21 #4
eagleeye -> Se den første henvis jeg lavede, der står hvordan man opdatere...
Avatar billede eagleeye Praktikant
12. februar 2001 - 08:24 #5
Ja opdater det kan jeg også få den til men indsætte nye records!!
Avatar billede eagleeye Praktikant
12. februar 2001 - 08:40 #6
Her er også en beskrivelse af hvordan det kan løses:
http://members.tripod.com/housten/exceldata.html
Avatar billede eagleeye Praktikant
12. februar 2001 - 08:42 #7
Prøv at kikke på dette eksempel. Her indsættes også en ny record:


You can use either the \"Microsoft Excel ODBC Driver\" or the \"OLE DB Provider for Jet\" to read and update an Excel spreadsheet.
Using the Microsoft Excel ODBC Driver:
Dim oConn As ADODB.Connection
Dim oRs As ADODB.Recordset

\' Create and open a new ADO Connection
Set oConn = New ADODB.Connection
oConn.Open \"Driver={Microsoft Excel Driver (*.xls)};\" & _
\"FIL=excel 8.0;\" & _
\"DefaultDir=C:\\Work;\" & _
\"MaxBufferSize=2048;\" & _
\"PageTimeout=5;\" & _
\"DBQ=C:\\Work\\ADOTest.xls;\"

\' Create the Recordset
Set oRs = New ADODB.Recordset

\' Open the Recordset using a Named Ranged
oRs.Open \"Select * from myRange1\", oConn, _
adOpenStatic, adLockBatchOptimistic, adCmdText

\' Open the Recordset using the Sheet Name
\' oRs.Open \"[Sheet1$]\", oConn, _
adOpenStatic, adLockBatchOptimistic, adCmdTable

\' Open the Recordset using the Sheet Name with row and column area
\' oRs.Open \"Select * from `Sheet1$A2:C4`\", oConn, _
adOpenStatic, adLockBatchOptimistic, adCmdText
Using OLE DB Provider for Jet:
Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim oRS As ADODB.Recordset

\' Open a connection to the Excel spreadsheet
Set oConn = New ADODB.Connection
oConn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;\" & _
\"Data Source=Expenses.xls;\" & _
\"Extended Properties=\"\"Excel 8.0;HDR=Yes;\"\";\"

\' Create a command object and set its ActiveConnection
Set oCmd = New ADODB.Command
oCmd.ActiveConnection = oConn

\' This SQL statement selects a cell range in the \"Expenses\" worksheet.
\' oCmd.CommandText = \"SELECT * from `Expenses$A2:C4`\"

\' This SQL statement selects a named cell range defined in the workbook.
oCmd.CommandText = \"SELECT * from `Range1`\"

\' Open a recordset containing the worksheet data.
Set oRS = New ADODB.Recordset
oRS.Open oCmd, , adOpenKeyset, adLockOptimistic

Debug.Print oRS.RecordCount

\' Update last row
oRS.MoveLast
oRS(0).Value = -1
oRS.Update

\' Add a new row
oRS.AddNew
oRS(0).Value = 7
oRS(1).Value = 8
oRS(2).Value = 9
oRS.Update
Debug.Print oRS.RecordCount

\' Clean Up
Set oCmd = Nothing
Set oRS = Nothing
oConn.Close
Set oConn = Nothing



Jeg har fundt det her: http://www.able-consulting.com/ADO_Faq.htm#Q15
Avatar billede smiley2 Nybegynder
14. februar 2001 - 06:44 #8
Jeg undskylder for den lange ventetid, men jeg skulle lige selv se om jeg kunne bruge det.

Jeg takker!
Avatar billede smiley2 Nybegynder
14. februar 2001 - 06:45 #9
I får 1/2 dele hver... det sidste indlæg var rimelig nice!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester