< návrat zpět

MS Excel


Téma: Data z Excel do Access rss

Zaslal/a 18.5.2012 21:25

Prosím o radu:
Mám data v access (accdb), bez problémů je přes ADODB zobrazím v Excelu. Ale potřeboval bych, aby pokud něco v Excelu změním nebo přidám další řádky s daty proběhla aktualizace dat v accdb.

Jinými slovy bych potřeboval všechny data od buňky x1,y1 do buňky x2,y2 "nasypal" do databáze, přičemž se asi něco bude editovat a nové řádky se tam musí přidat.

Prosím o radu jak na to, nejlépe i z ukázkou kódu, nebo alespoň odkaz...
Děkuji

Zaslat odpověď >

#008558
Jeza.m
Jelikož mám jen office 2003, tak se můžu vyjádřit k němu.
Napíšu jen zjednodušenou verzi předpokládající, že se jedná o textové pole. (Datové a číselné musí být v dotazu řešeny jinak).
1) V referencích projektu je třeba přidat referenci na Microsoft ActiveX Data Objetcts 2.8 Library (použito v mém případě).
2) V databázi je potřeba mít nějaký jedinečný identifikátor (ID).
3) V tvém zobrazovacím dotazu budu předpokládat, že ID bude zobrazeno v prvním sloupci Excelu.
4) Kód pro úpravu hodnoty na základě změně excelové buňky (neřeší žádné ověřování apod.)
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next

Dim strConn, field As String
Dim db_id As Single

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\data.mdb;User Id=admin;Password=;"
conn.Open strConn

db_id = Cells(Target.Row, 1)
field = Cells(1, Target.Column)
conn.Execute "UPDATE TABULKA SET " & field & "='" & Target.Value & "' WHERE ID = " & db_id

conn.Close

Set rs = Nothing
Set conn = Nothing
End Sub


Vložení nového bude obdobné s tím rozdílem že proběhne ověření je-li v prvním sloupci ID, pokud bude buňka prázdná, tak by se předpokládalo že jde o nový záznam a SQL příkaz změníš na Insert Into TABULKA (Seznam polí) Select Seznam hodnot.

M@citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse