Hur gör jag för att importera data från ett kalkylblad till en databas i VB ? Antingen är jag synnerligen förvirrad eller så har du egentligen frågat hur du gör ett program för att läsa från Excelfiler och spara dem i en Accessdatabas (mdb). Stämmer det? Verkar som om jag uttryckt mig otydligt... Har du tillgång Office Access. ?? Det enklaste sättet är att använda "kraften" hos Access: Tackar! Jag missade SELECT * i frågan. Det ska vara:Hur importerar jag till databas?
I Access är det ju enkelt, men hur gör jag i VB6?
Det är kalkylark som går att spara i xls format som är grunden för datan som ska in i en databas.
Det är ca 20 blad med vardera 10 kolumner och 250 rader som ska in i en mdb databas och sedan göras rapporter på ca 200 sidor. Antalet rader i kalkylbladen varierar från 0-250.
Detta ska göras löpande med olika filer varje gång.
Tacksam för all hjälp!
/ChristerSv: Hur importerar jag till databas?
Din fråga kan lika gärna tolkas som om du inte riktigt vet att det inte finns någon databas i VB6 och att mdb är Accessdatabaser.
Ett litet och allvarligt menat tips är: Har du prövat Copy+Paste?? Det har funkat i andra fall att kopiera data ur Excel och klistra in det i Access.
//Mikael.NETSv: Hur importerar jag till databas?
Jag har en fil i xls format (nej inte från excel, bara sparad i det formatet av en komponent i mitt program).
Datan som finns i 20 av dom bladen (dvs inte alla) skall importeras i en databas. Allt skall göras av mitt program, dvs, varken access eller excel finns med i bilden alls. Man ska bara klicka på en knapp så ska det importeras och skapas en väldig massa rapporter och skrivas ut.
Anledningen till att jag vill ha mdb formatet är att det väl får ses som ganska standard, och dom flesta rapportgeneratorer läser det utan problem. Och det är det jag varit i kontakt med tidigare vill jag sedan ha in det i access så får jag inga problem då...
Frågan är altså hur jag gör ett program för att läsa från Excelfiler och spara dem i en Accessdatabas (mdb).Sv: Hur importerar jag till databas?
Om så kan du tillverka en tom darabas med alla dom fält som behövs
med sina Fältnamn och DataTyp och ev Primärnyckel
Sen är det väldigt enkelt att göra ett Vb program som läser in
från din Excelfil till de olika .mdb fälten.
Kom igen tycker att det är ett intressant litet projekt.
Om du inte har tillgång till Access kan man tillverka databasen från VB.
/SvenSv: Hur importerar jag till databas?
Detta exemplet skapar tabellen NyTabell och importera Blad1 från Excel:
<code>
Private Sub Command1_Click()
Dim conn As ADODB.Connection
Const AccessPath As String = "C:\Documents and Settings\Administratör\Mina dokument\db1.mdb"
Const ExcelPath As String = "C:\Documents and Settings\Administratör\Mina dokument\Bok1.xls"
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessPath & ";Persist Security Info=False"
conn.Execute "SELECT * INTO NyTabell" & vbCrLf & _
"FROM [Blad1$] IN '' [Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & ExcelPath & "];"
conn.Close
End Sub
</code>
Skall du imortera till en befintlig tabell, skriver du:
<code>
Private Sub Command1_Click()
Dim conn As ADODB.Connection
Const AccessPath As String = "C:\Documents and Settings\Administratör\Mina dokument\db1.mdb"
Const ExcelPath As String = "C:\Documents and Settings\Administratör\Mina dokument\Bok1.xls"
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessPath & ";Persist Security Info=False"
conn.Execute "INSERT INTO MinTabell" & vbCrLf & _
"FROM [Blad1$] IN '' [Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & ExcelPath & "];"
conn.Close
End Sub
</code>
Då skall tabellen ha samma struktur som exelfilen.
Dessa operationer är mycket snabba eftersom databasmotorn öppnar Excelfilen med ett ISAM filter och infogar posterna. Du slipper använda recordset.
En annan fördel är att du inte behöver ha Excel installerat på datorn. Vilket krävs om man skall använda Excel's objekt.Sv: Hur importerar jag till databas?
Del 1 verkar funka precis som jag vill ha det!
I del 2 så får jag syntax fel på
<code> conn.Execute "INSERT INTO NyTabell" & vbCrLf & "FROM [blad2$] IN '' [Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & ExcelPath & "];"</code>
"syntaxfel i insert into-uttryck"
Vad jag kommit fram till så är det i <code>conn.Execute "INSERT INTO NyTabell"</code> delen problemet ligger.
Men satsen verkar vara uppbyggd som i hjälpen...
"NyTabell" är vad min tabell heter.
Några ideer?
/christerSv: Hur importerar jag till databas?
<code>
conn.Execute "INSERT INTO NyTabell" & vbCrLf & _
"SELECT *" & vbCrLf & _
"FROM [blad2$] IN '' [Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & ExcelPath & "];"
</code>