Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

vbs - Oracle DB to xls

Frage Entwicklung Datenbanken

Mitglied: KikiMiki

KikiMiki (Level 1) - Jetzt verbinden

17.11.2009 um 12:32 Uhr, 4324 Aufrufe, 6 Kommentare

Hallo,

dank der Hilfe im Forum hier hab ich eine vbs welche mir ein SQL-Statement auf unserer MYSQL DB ausführt und das Ergebnis in xls importiert. Ist das auch für eine Oracle DB möglich?
Hier der von mir benutzte Code:

01.
Option Explicit 
02.
 
03.
'---- CursorTypeEnum Values ---- 
04.
Const adOpenForwardOnly = 0 
05.
' Const adOpenKeyset = 1 
06.
' Const adOpenDynamic = 2 
07.
' Const adOpenStatic = 3 
08.
 
09.
'---- LockTypeEnum Values ---- 
10.
Const adLockReadOnly = 1 
11.
' Const adLockPessimistic = 2 
12.
' Const adLockOptimistic = 3 
13.
' Const adLockBatchOptimistic = 4 
14.
 
15.
'---- CursorLocationEnum Values ---- 
16.
' Const adUseServer = 2 
17.
Const adUseClient = 3 
18.
 
19.
'---- ConnectModeEnum Values ---- 
20.
' Const adModeUnknown = 0 
21.
Const adModeRead = 1 
22.
' Const adModeWrite = 2 
23.
' Const adModeReadWrite = 3 
24.
' Const adModeShareDenyRead = 4 
25.
' Const adModeShareDenyWrite = 8 
26.
' Const adModeShareExclusive = &Hc 
27.
' Const adModeShareDenyNone = &H10 
28.
' Const adModeRecursive = &H400000 
29.
Dim objExcel, objWb, SkriptPfad 
30.
Dim objSheet 
31.
Dim Conn, RS 
32.
Dim rowCount, i, headerSet 
33.
Dim x 'Zähler für Statusbar 
34.
 
35.
 
36.
MsgBox "Mit dem OK-Button wird der Import gestartet."& vbCrLf & "Je nach SQL-Statement kann der Import mehrere Minuten dauern!" ,64, "Info" 
37.
 
38.
 
39.
x = 0 'Anfangswert für Zähler - Anzahl importierter Datensätze 
40.
 
41.
 
42.
rowCount = 1 
43.
 
44.
SkriptPfad = WScript.ScriptFullName 'Pfadermittlung 
45.
SkriptPfad = Left(SkriptPfad, Len(SkriptPfad) - Len(WScript.ScriptName))  'Pfadermittlung 
46.
 
47.
 
48.
Set objExcel = CreateObject("Excel.Application")  
49.
Set objWb = objExcel.Workbooks.Open(SkriptPfad & "Report.xls")'öffnet die angegebene xls 
50.
 
51.
 
52.
 
53.
objExcel.Visible = False 'die geöffnete xls ist während dem Import nicht sichtbar 
54.
objExcel.Sheets("Datenbasis").Select 'wählt die angegebene Mappe der zuvor geöffneten xls 
55.
objExcel.Range("Datenbasis!$1:$65536").ClearContents 'löscht alle Inhalte von angegebener Mappe 
56.
 
57.
'Angabe des Tabellenblattes 
58.
Set objSheet = objExcel.ActiveWorkbook.WorkSheets("Datenbasis") 'Import in angegebenes Tabellenblatt 
59.
 
60.
Set Conn = CreateObject("ADODB.Connection") 
61.
Conn.Provider = "MSDASQL" 
62.
Conn.Mode = adModeRead 
63.
Conn.CursorLocation = adUseClient 
64.
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _ 
65.
          "SERVER=100.10.19.173;UID=read_user;PWD=geheim;Port=3310;database=kunden_db" 
66.
          
67.
 
68.
Set RS = CreateObject("ADODB.Recordset") 
69.
RS.CursorLocation = adUseClient 
70.
'verwendete SQL-Anweisung 
71.
RS.Source = "SELECT * from Kundentabelle;" 
72.
Set RS.ActiveConnection = Conn 
73.
RS.CursorType = adOpenForwardOnly 
74.
RS.LockType = adLockReadOnly 
75.
RS.Open           
76.
 
77.
Do While Not RS.EOF 
78.
'objExcel.StatusBar = x & " Datensätze aus Kundendatenbank importiert" 'Text für Statusbar 'macht nur Sinn bei objExcel.Visible = True 
79.
'Die Spalenüberschriften einfügen Bezug aus dem SQL-Statement 
80.
	If( headerSet = 0 ) Then 
81.
		For i = 0 to RS.Fields.Count - 1 
82.
		  objSheet.Cells(rowCount, i+1).Value = RS.Fields.Item(i).Name 
83.
		Next 
84.
		headerSet = 1 
85.
    End If 
86.
'Die dazugehörigen Werte einfügen 
87.
	For i = 0 to RS.Fields.Count -1  
88.
	  objSheet.Cells(rowCount+1, i+1).Value = RS.Fields.Item(i).Value 
89.
	Next 
90.
    rowCount = rowCount + 1 
91.
	RS.MoveNext 
92.
	 
93.
x = x + 1 
94.
Loop 
95.
'objExcel.Statusbar = False 'Statusbar bereinigen 'macht nur Sinn bei objExcel.Visible = True 
96.
 
97.
 
98.
objExcel.Sheets("Kunden").Select 'wählt die angegebene Mappe der zuvor geöffneten xls 
99.
objExcel.Cells(12, 5) = Date & " / " & Time & " Uhr"  
100.
objExcel.Cells(13, 5) = x & " Datensätze" 
101.
 
102.
 
103.
RS.Close 
104.
Set RS = Nothing 
105.
 
106.
Conn.Close 
107.
Set Conn = Nothing 
108.
 
109.
 
110.
objExcel.Visible = False  
111.
 
112.
objExcel.ActiveWorkBook.Save  
113.
objExcel.Quit 
114.
 
115.
 
Mitglied: Biber
17.11.2009 um 13:13 Uhr
Moin KikiMiki,

natürlich ist es möglich.

Benötigst du das denn auf einem Rechner, auf dem ein (=irgendein) Oracle-Client installiert ist oder liegt nur der Original-MS-Oracle-Dünnbrett-Treiber vor?

Grüße
Biber
Bitte warten ..
Mitglied: KikiMiki
17.11.2009 um 13:17 Uhr
Hi Biber
Bin jetzt nicht so der Proooofi
Über Toad for Oracle greif ich auch unsere DB...

Hilft dir das weiter?
Bitte warten ..
Mitglied: Biber
17.11.2009 um 13:39 Uhr
Moin KikiMiki,

wenn TOAD installiert ist, dann gibt es wahrscheinlich auch eine richtig einstellte tnsnames.ora.
Aus dieser kannst du dann die Feinheiten abtippen.

Das grobe Raster für Egal-welchen-Oracle-Zugriff findest du ansonsten auf Connectionstrings.

Grüße
Biber
Bitte warten ..
Mitglied: KikiMiki
17.11.2009 um 14:02 Uhr
Hi Biber

bezogen auf meinen geposteten Code, welche Passagen muss ich ändern?
Ist der Aufbau der gleiche und nur die Verbindungsparameter müssen geändert werden?
Bitte warten ..
Mitglied: Biber
17.11.2009 um 14:41 Uhr
Moin KikiMiki,

es sollte mit der gleichen Mimik funktionieren, lediglich die Zeilen 61-65 sollten mit den Daten der Oracle-Connection gefüllt werden.

Da es (soweit es ersichtlich) nur um Lesezugriffe geht, ist kein größerer Änderungsaufwand ableitbar.

Grüße
Biber
Bitte warten ..
Mitglied: Bacaaardi
17.11.2009 um 15:05 Uhr
Hallo,

irgendwie check ich das nicht


01.
Conn.Provider = "MSDASQL"  
02.
Conn.Mode = adModeRead  
03.
Conn.CursorLocation = adUseClient  
04.
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _  
05.
          "SERVER=100.10.19.173;UID=read_user;PWD=geheim;Port=3310;database=kunden_db" 
Kann ich exakt die gleiche Syntax nehmen?
Nur Server, UID, PWD,POrt und databese mit den entsprechenden Werten ersetzten?
Brauch ich keine zusätzlichen Werte, heißt auch alles Gleich z.B. UID oder UserID?

Bei Conn.Provider was muss da stehen wenn es eine Oracle DB ist?

Damit mein Skript über die MySQL überhaupt lief musste ich mysql-connector-odbc-5.1.5-win32.msi installieren
Brauch ich auch was für dei Oracle DB?
Bitte warten ..
Ähnliche Inhalte
Datenbanken
ORACLE DB Abfrage (5)

Frage von Marabunta zum Thema Datenbanken ...

Microsoft Office
Automatischer Datenimport aus csv Datei in Access DB - Wo zu ändern? (2)

Frage von Mejestic12 zum Thema Microsoft Office ...

Entwicklung
gelöst Grafische Darstellung - Fortschrittsanzeige VBS Skript (7)

Frage von Komoran12 zum Thema Entwicklung ...

Batch & Shell
gelöst Vbs programm unabhängig vom Speicherort ausführen (2)

Frage von Markus2016 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Server-Hardware
Einem Stromausfall entgegen wirken (22)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Server-Hardware ...

Festplatten, SSD, Raid
PC stellt nach dem Bios ab (20)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...

Windows 7
Freeware MSI Tool (13)

Frage von uridium69 zum Thema Windows 7 ...

DSL, VDSL
gelöst Ständige Störungen - Internet (12)

Frage von gamerff zum Thema DSL, VDSL ...