Autor
|
Thema: Excel-VBA: Tabellen nach SQL Server 2005 Express exportieren... (9247 mal gelesen)
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 27. Nov. 2006 13:36 <-- editieren / zitieren --> Unities abgeben:
Hallo Freunde, ich habe da mal wieder ein kleines Problem: Ich sollte aus Excel-Tabellen Daten in eine SQL-Datenbank übergeben. Mit Access habe ich das bereits geschafft (Dank an http://www.schmittis-page.de), aber wie das mit SQL geht, davon habe ich keine Ahnung. Achtung: ich bin ein absoluter SQL-DAU (unter anderem )! Soll heißen: Null Ahnung von SQL Ich verwende den SQL Server 2005 Express. Die Datenbank ist angelegt, beim Ausführen sollte die betreffende Tabelle in der DB gelöscht und neu erzeugt werden. Sollte das mit VBA nicht möglich sein, dann vielleicht mit VB.NET 2003 oder VB.NET 2005 Express? VB6 möchte ich da nicht mehr heranziehen, neue Sachen möchte ich damit nicht mehr machen. ------------------ Klaus www.al-ko.com | Pssst...unbedingt hier klicken!!! | mein Gästebuch | privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** Dell Precision 7540 mobile Workstation, 64GB, Quadro RTX 3000; SWX2020 SP5; SAP/PLM+ECTR; DriveWorks Pro; Programmierung: VBA, aktuell Visual Studio 2017/VB.Net
|
erstellt am: 28. Nov. 2006 10:44 <-- editieren / zitieren --> Unities abgeben:
Scheint ja ganz schön schwierig zu sein. Das Öffnen der SQL-Datenbank habe ich schon mal geschafft: Code: 'Dieses Beispiel öffnet mit der OpenDatabase-Methode eine Microsoft SQL-Datenbank sowie zwei mit Microsoft SQL verbundene ODBC-Datenbanken.Sub OpenDatabaseX() Dim wrkSQL As Workspace Dim dbsTEST As Database Dim prpLoop As Property Debug.Print "............................................." ' Create Microsoft SQL Workspace object. Set wrkSQL = CreateWorkspace("", "Testuser", "Testpasswort", dbUseODBC) ' Open Database object from saved Microsoft SQL database ' for not exclusive use. ' Note: The DSN referenced below must be set to ' use Microsoft Windows NT Authentication Mode to ' authorize user access to the Microsoft SQL Server. MsgBox "Opening TEST..." Set dbsTEST = wrkSQL.OpenDatabase("TEST-SQL", _ dbDriverCompleteRequired, _ True, _ "ODBC;DATABASE=TEST-SQL;DSN=TEST-SQL") ' Enumerate the Databases collection. For Each dbsLoop In wrkSQL.Databases Debug.Print "Database properties for " & _ dbsLoop.Name & ":"
On Error Resume Next ' Enumerate the Properties collection of each Database ' object. For Each prpLoop In dbsLoop.Properties If prpLoop.Name = "Connection" Then ' Property actually returns a Connection object. Debug.Print " Connection[.Name] = " & _ dbsLoop.Connection.Name Else Debug.Print " " & prpLoop.Name & " = " & _ prpLoop End If Next prpLoop On Error GoTo 0 Next dbsLoop wrkSQL.BeginTrans 'hier muss wohl die Aktion stattfinden wrkSQL.CommitTrans dbsTEST.Close wrkSQL.Close End Sub
Das stammt im Prinzip so aus der (mageren) VBA-Hilfe. Aber mehr schaffe ich nicht, weder Auslesen der Tabellen noch Erzeugen von neuen Daten. ------------------ Klaus www.al-ko.com | Pssst...unbedingt hier klicken!!! | mein Gästebuch | privat... [Diese Nachricht wurde von KMassler am 29. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
P164 Mitglied
Beiträge: 39 Registriert: 03.06.2004
|
erstellt am: 29. Nov. 2006 19:26 <-- editieren / zitieren --> Unities abgeben: Nur für KMassler
beiliegen ein Modul das Excel-Tabellen als Datenbank behandelt. MDB-Dateien erstellt, Tabellen erstellt, und bearbeitet. Die Datenbankstruktur, so wie die Tabellen, hängen jeweils an einem RecordSet. In meinem Modul wurde darauf geachtet das alle Daten an einem RecSet hängen. Somit ist es ein leichtes die Daten via SQL-Befehl in jede beliebige Datenbank zu kopiern. Wenn ohne SQL, dann nach dem Prinzip RecSetAlt.MoveFirst Do Until RecSetAlt.EOF RecSetNeu.AddNew RecSetNeu.Fields("Spalte1).Value = RecSetAlt.Fields("Spalte1).Value ...... RecSetNeu.Fields("SpalteX).Value = RecSetAlt.Fields("SpalteX).Value RecSetNeu.Update RecSetAlt.MoveNext Loop Da Excel sich nicht zu allen Datenbank-Aktivitäten überreden lässt, rate ich von einer Excel-Datenbank ab. Wenn schon Excel, dann bitte, ExcelDatei in Access importieren bzw aus Access exportieren. Modul läuft unter VB und VBA. Voraussetzung für die Funktion des Modul ist, das ein Verweis auf ADO und ADOX vorhanden ist. Siehe beiliegendes Bitmap ------------------ das Leben ist schön, meint Ingolf [Diese Nachricht wurde von P164 am 29. Nov. 2006 editiert.] [Diese Nachricht wurde von P164 am 29. Nov. 2006 editiert.] [Diese Nachricht wurde von P164 am 29. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** Dell Precision 7540 mobile Workstation, 64GB, Quadro RTX 3000; SWX2020 SP5; SAP/PLM+ECTR; DriveWorks Pro; Programmierung: VBA, aktuell Visual Studio 2017/VB.Net
|
erstellt am: 30. Nov. 2006 09:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Ingolf, die Datei kann ich leider nicht runterladen. Es handelt sich um einfache Excel-Tabellen. Es ist einfach so, dass sich die Daten in einer Excel-Tabelle viel einfacher und komfortabler einpflegen lassen als direkt in der Datenbank, da sie hier mit allen Excel-Funktionen bearbeitet werden können. Die Excel-Tabelle ist natürlich kein Ersatz für die Datenbank. Die Datenbanktabelle brauche ich aber für eine Anwendung. Also möchte ich die Daten aus der Excel-Tabelle in die SQL-Datenbank übergeben - auf Knopfdruck. Mit Access habe ich das ja wie gesagt schon geschafft, aber Access ist für diesen Zweck nicht unbedingt geeignet, daher verwende ich nun den SQL Server Express. Mehr als den oben gezeigten Code habe ich bisher nicht, ich habe keinen Schimmer, wie ich auf die Tabellen zugreifen bzw. diese anlegen etc. kann. Ciao Klaus ------------------ Klaus www.al-ko.com | Pssst...unbedingt hier klicken!!! | mein Gästebuch | privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 03. Dez. 2006 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für KMassler
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 04. Dez. 2006 09:21 <-- editieren / zitieren --> Unities abgeben:
Danke für das Reinstellen des Codes. Aber das ist eben "nur" für Access-Datenbank. Ich bin zu "DAU"ig, um das auf ne SQL-Server-Datenbank zu portieren. Na was solls, dann mach ich das halt weiter von hinten durch die Brust ins Auge: - Excel-Daten pflegen (weils so komfortabel und flexibel ist)
- Excel-Daten per VBA-Macro nach Access schieben
- Access-Daten per Usizing-Assistent in die SQL-Server-DB "hoch"-schieben.
Irgendwann hab ich ja (hoffentlich) auch mal nen Stand erreicht, an dem die meisten Daten drin sind, so dass ich das nur noch ab und zu machen muss. Ciao ------------------ Klaus www.al-ko.com | Pssst...unbedingt hier klicken!!! | mein Gästebuch | privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mathias.bergundthal Mitglied informatiker
Beiträge: 153 Registriert: 03.08.2005 BUSINESS | HP xw6000 - 3.06GHz - 2GB - NVidia Quadro FX 3000 WXP Pro SP2 - CATIA V5 R16 SP6<P>PRIVATE | ASUS W7J-3P074P - T7200 - 1GB - NVidia Go 7400 WXP Pro SP2
|
erstellt am: 06. Dez. 2006 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für KMassler
Hi Klaus, kennst du den Data Transfer Service von MS SQL Server? kannst direkt ein ExcelFile anwählen, sagen welche Zeile in welchen Feld soll und jetzt kommt der "burner" kannst sogar den Code generieren lassen um es irgendwo einzubinden wünsche noch viel Spass, Mathias
------------------ In diesem Zeitalter der Massenkomunikation sind Verrücktheiten ansteckend. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 07. Dez. 2006 10:18 <-- editieren / zitieren --> Unities abgeben:
|
mathias.bergundthal Mitglied informatiker
Beiträge: 153 Registriert: 03.08.2005 BUSINESS | HP xw6000 - 3.06GHz - 2GB - NVidia Quadro FX 3000 WXP Pro SP2 - CATIA V5 R16 SP6<P>PRIVATE | ASUS W7J-3P074P - T7200 - 1GB - NVidia Go 7400 WXP Pro SP2
|
erstellt am: 12. Dez. 2006 07:44 <-- editieren / zitieren --> Unities abgeben: Nur für KMassler
uhhh Klaus, du stellst jetzt gerade ein paar Fragen... Also ob du den DTS unter Express findest... kann ich dir nicht sagen, aber ich kann dir sagen wo er sich befinden sollte:
wenn du im SQL Manager eine DB(rsp. Instance) auswählst dann auf Tool gehst solltest du gerade als erstes eine Option haben die Data Transformation Service heisst (und nicht transfer ) ab da ist alles wizard geführt. hoffe du findest die option im Express, sonst schau dich für eine Developer Edition um grüsse, mathias
------------------ In diesem Zeitalter der Massenkomunikation sind Verrücktheiten ansteckend. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 13. Dez. 2006 08:38 <-- editieren / zitieren --> Unities abgeben:
|
mathias.bergundthal Mitglied informatiker
Beiträge: 153 Registriert: 03.08.2005 BUSINESS | HP xw6000 - 3.06GHz - 2GB - NVidia Quadro FX 3000 WXP Pro SP2 - CATIA V5 R16 SP6<P>PRIVATE | ASUS W7J-3P074P - T7200 - 1GB - NVidia Go 7400 WXP Pro SP2
|
erstellt am: 14. Dez. 2006 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für KMassler
|