Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  Excel-VBA: Tabellen nach SQL Server 2005 Express exportieren...

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
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...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 27. Nov. 2006 13:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von P164 an!   Senden Sie eine Private Message an P164  Schreiben Sie einen Gästebucheintrag für P164

Beiträge: 39
Registriert: 03.06.2004

erstellt am: 29. Nov. 2006 19:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich


IDee_09_ADO.txt

 
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...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 04. Dez. 2006 09:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von mathias.bergundthal an!   Senden Sie eine Private Message an mathias.bergundthal  Schreiben Sie einen Gästebucheintrag für mathias.bergundthal

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

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...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 07. Dez. 2006 10:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Mathias,

nein, den kenne ich nicht, habe im SQL Server Management auch nichts gefunden. Gibts den auch für SQL Server Express? Oder nur für die "große" Version?

Und wenn ja, wo finde ich das?

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


Sehen Sie sich das Profil von mathias.bergundthal an!   Senden Sie eine Private Message an mathias.bergundthal  Schreiben Sie einen Gästebucheintrag für mathias.bergundthal

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

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...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 13. Dez. 2006 08:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für den Hilfeversuch, aber das gibts bei mir nicht:

Und für ne "große" Lösung sehe ich gerade keine Möglichkeit...Also bleibt halt Handarbeit angesagt bei der Pflege der Daten.
Es geht ja...nur eben nicht so komfortabel, wie ich mir das wünschen würde.

Aber sei's drum, lasst es gut sein.
Ich danke noch mal allen, die sich für mich den Kopf zerbrochen haben!

------------------
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


Sehen Sie sich das Profil von mathias.bergundthal an!   Senden Sie eine Private Message an mathias.bergundthal  Schreiben Sie einen Gästebucheintrag für mathias.bergundthal

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

ich weiss das ich nun nicht mehr posten sollte, aber ich kann es nicht sein lassen
http://www.microsoft.com/technet/community/chats/trans/sql/SQL_081004.mspx

schau mal rein, vielleicht findest du eine lösung


viel glück
grüsse, mathias

------------------
In diesem Zeitalter der Massenkomunikation sind Verrücktheiten ansteckend.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz