WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 05.07.2004, 10:38   #1
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard daten aus excel nach access (mdb) exportieren

weiß jemand wie man Daten (per VBA) aus einer access-datenbank in excel öffnen und nach dem bearbeiten wieder in die mdb-datebank zurückspeichern kann? (also eigentlich brauch ich die implementierung von sql in vba )

mfg
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 05.07.2004, 11:02   #2
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hi!

Werd mal ein Bißchen konkreter!

mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 05.07.2004, 11:08   #3
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

ich möchte eine mdb datenbank in excel aufrufen (abfragen etc) dann bearbeiten können und wieder _zurückspeichern_


mfg
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 05.07.2004, 11:38   #4
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hi!

Also mit VBA ist das auf jeden Fall zu realisieren. Wahrscheinlich ist es aber keine optimale Lösung.

Wenn du Änderungen wieder in die DB speichern willst, mußt du entweder "wissen" was geändert wurde, oder die ganzen Daten neu schreiben.

Bevor du diesen Aufwand treibst, solltest du es mit Bordmitteln versuchen.
Neuere Versionen von Excel können *.mdb öffnen. Vielleicht geht da schon alles, was für dich notwendig ist.

Wenn das nicht klappt, bleibt noch immer der Weg über VBA.
Dabei könnte ich dir helfen.

Ich hab mal nachgefragt: Zurückpeichern funktioniert angeblich nicht.
(Ich hab nur Excel 97, kann's also nicht probieren)
Damit bleibt zum Speicher wohl nur VBA.

mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 05.07.2004, 11:52   #5
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

hab den code jetzt schon fast beisammen, aber irgendwo klemmts:
Code:
Option Base 1
Global db As Database, rc As Recordset, rc1 As Recordset, rec As Recordset, rc2 As Recordset
Global aktuellesnodes As Variant

Sub sql()
Dim w1 As Worksheet
Set w1 = Worksheets("Sheet1")
w1.Range("C3:K30").ClearContents
a = ActiveCell.Row
Nr = ActiveSheet.Cells(a, 29).Value
Set db = DBEngine.Workspaces(0).OpenDatabase("J:\PROJEKT\PIS\test\test.mdb")
sql1 = "SELECT Tabelle1.PNR, Tabelle1.NAME, Tabelle1.VNAM, Tabelle1.KST FROM Tabelle1 WHERE (((Tabelle1.PNR)=[NR]))"
Set rc1 = db.OpenRecordset(sql1)
On Error Resume Next
rc1.MoveFirst
ss = 3
i = rc1.RecordCount
w1.Select
While Not rc1.EOF
For anz = 1 To i
w1.Cells(3, ss).Value = rc1!fnr
w1.Cells(4, ss).Value = rc1!Pnr
w1.Cells(5, ss).Value = rc1!Name
w1.Cells(6, ss).Value = rc1!VNAM
ss = ss + 1
rc1.MoveNext
Next anz
Wend
End Sub
in der roten Zeile fehlt laut Debugger ein Parameter.. nur welcher ?

mfg
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 05.07.2004, 12:18   #6
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hi!

Schon lange her, daß ich DAO verwendet habe. Versuch mal, den Parameter für den Typ mitzugeben. Wenn der fehlt, wird dbOpenTable
verwendet. Das funktioniert vielleicht mit der SQL-Anweisung nicht.

Probier mal
Set rc1 = db.OpenRecordset(sql1, dbOpenDynaset)

Falls deine Version ADO unterstützt, solltest du das verwenden.

mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 05.07.2004, 12:33   #7
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

leider kommt die gleiche meldung
hättest du einen aedequanten ado-code parat ?
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 05.07.2004, 13:02   #8
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Ich schau mal nach dem Code.

Zwischenfrage: Sind die notwendigen Verweise gesetzt?

mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 05.07.2004, 13:16   #9
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von wbendl
Ich schau mal nach dem Code.

Zwischenfrage: Sind die notwendigen Verweise gesetzt?

mfg

WB
ja, alle diese meldungen hab ich beseitigen können

kann es sein, dass meine select anweisung nicht ganz richtig ist?

"Die Select-Anweisung schließt ein reserviertes wort ein...."

mfg
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 05.07.2004, 13:34   #10
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hier ein Beispiel für ADO:

Verweis auf Microsoft ActiveX Data Objects x.x Libary muß gesetzt sein.
strProv muß eventuell angepaßt werden.
Ansonsten müßte es so funktionieren.

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

Dim strProv As String
Dim strDB As String

Dim strSQL As String

strProv = "Microsoft.Jet.OLEDB.4.0"
strDB = "D:\XXXX.mdb"
strSQL = "SELECT * FROM XXXX"

cnn.Provider = strProv
cnn.Open strDB, "Admin"
rst.Open strSQL, cnn

Wenn die Feldnamen eindeutig sind, kannst du den Tabellen-Namen weglassen. Ein Paar Klammern sin wohl auch überflüssig.
Die WHERE-Klausel scheint mir nicht OK zu sein.
Zum Testen des DB-Zugriffes nimm ein ganz einfaches SQL-Statement.

mfg

WB
wbendl ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:19 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag