Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Oracle-DB mit ODBC: Feld nicht gefunden

Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 11:03:00
Thomas
Hallo,
ich habe ein kleines Problem bei der Abfrage einer Oracle- Datenbank über die ODBC-Schnittstelle. Bei der Verwendung von SQL-Plus kann ich mir die gewünschte Tabelle mit dem Befehl
(Beispiel)
"SELECT PART_NO2 FROM CHS.HOUS_DEF WHERE PART_NO1 = '193';"
ausgeben lassen.
Wenn ich nun die gleiche Abfrage über Excel-VBA ausführe (CODE:)
Dim db As Database
Dim rst As Recordset
Dim sql as String
sql = "SELECT PART_NO2 FROM CHS.HOUS_DEF WHERE PART_NO1 = '193';"
Set rst = db.OpenRecordset(sql)
erscheint immer die Fehlermeldung, das die Datei "...\CHS.mdb nicht gefunden wurde.
Verwende ich
sql = "SELECT PART_NO2 FROM [CHS.HOUS_DEF] WHERE PART_NO1 = '193';"
order lasse ich das "CHS" vor dem "." weg,
erscheint eine Fehlermeldung: "Laufzeitfehler 3019, Feld nicht gefunden"
Bei anderen Tabellen der Datenbank funktioniert das so (weglassen von "CHS." oder verwenden von "[]").
Weiß jemand wo drann das liegen könnte? Oder stimmt dann was mit der Datenbank nicht? (Obwohl die sqlplus abfrage funktioniert) ?
Danke für eure Hilfe !
Thomas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 11:11:00
Renee
Mazwara Thomas,
Wo sind den Deine Befehle für den Aufbau der Data-Connection ?
Greetz Renee

AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 11:15:00
Thomas
Hi, das Sub dazu sieht so aus (wobei db global deklariert ist)

Private Sub connect_db()
On Error GoTo ConError:
form_pw.Show
db_password = form_pw.txt_pw
db_user = form_pw.txt_user
ConnectStr = "ODBC;driver={Microsoft ODBC for Oracle};UID=db_user;PWD=" & db_password & "; _
SERVER=chs"
Set db = OpenDatabase("", dbDriverNoPrompt, True, ConnectStr)
Exit Sub
ConError:
MsgBox ("Verbindungsaufbau zur Datenbank fehlgeschlagen!")
End
End Sub


Anzeige
AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 11:19:44
Renee
Hi Thomas,
Das sind alles nur einzelne Code-Fragmente.
Wenn das Zeug nicht zusammenpasst, funktioniert's auch nicht.
Kannst nicht mal alle Routinen, & Public declarations posten, die das Problem betreffen?
Sonst gibt das ein ewiges hin und her...
Greetz Renee

AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 11:23:00
ede
hallo,
es sieht danach aus, das dein connection-string falsch ist!
ConnectStr = "ODBC;driver={Microsoft ODBC for Oracle};UID=" & db_user & ";PWD=" & db_passwor...
gruss

AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 12:01:14
Thomas
Ok, hier der Code.
!Achtung! Er ist noch nicht ganz fertig d.h. er funktioniert noch nicht ganz. Mir geht es einfach erstmal nur um die Beseitigung der Fehlermeldung das kein Feld gefunden wurde.
viele Grüße Thomas
Dim db As Database
Dim rst As Recordset

Private Sub cmd_del_Click()
Call DieseArbeitsmappe.cptbl
End Sub



Private Sub cmd_get_Click()
Dim ws As Worksheet
'Gesamten Inhalt der Zellen löschen
Call cmd_del_Click
Call connect_db 'Verbindungsaufbau zur Datenbank
MsgBox GetHouseDef("193")
'Starten der Abfrage
BED_1 = "INTEPN is NOT NULL AND "
BED_2 = "INTEPN  ' '"
'BED_3 = "GRPNAME  'Wire' AND "
'BED_4 = "GRPNAME  'Splice' AND "
'BED_5 = "GRPNAME  'Multicore' "
BED = BED_1 & BED_2 & BED_3 & BED_4 & BED_5
Dim querry As String
'querry = "SELECT COMPONEN.INTEPN, COMPONEN.USERF##1 FROM COMPONEN"
Bed1 = " grpname  'assambly' "
Bed2 = " AND grpname  'Back%' "
Bed3 = " AND grpname  'Device' "
Bed4 = " AND grpname  'Wire' "
Bed5 = "AND grpname  'Splice' "
Bed6 = "AND INTEPN not like 'd%' "
Bed7 = "AND INTEPN not like 'fail' % "
Alle_Bed = Bed1 & Bed2 & Bed3 & Bed4 & Bed5 & Bed6
querry = "SELECT * FROM COMPONEN WHERE " & Alle_Bed & "ORDER BY INTEPN"
Set rst = db.OpenRecordset(querry)
rst.MoveFirst
'Zum ersten Datensatz springen
rst.MoveFirst
'Ausgeben der Daten in die Tabelle
Dim lauf As Integer
lauf_zeile_start = 3 'Startzeile der Ausgabe
lauf_spalte_start = 1 'Startspalte der Ausgabe
lauf_zeile = lauf_zeile_start + 1
lauf_spalte = lauf_spalte_start + 0
Do While Not rst.EOF 'Solange nicht der letzte Datensatz erreicht ist...
Cells(lauf_zeile, lauf_spalte + 0).Value = rst("INTEPN") '1
Cells(lauf_zeile, lauf_spalte + 1).Value = rst("USERF##4") '2
Cells(lauf_zeile, lauf_spalte + 2).Value = rst("descript") '3
Cells(lauf_zeile, lauf_spalte + 3).Value = rst("USERF##1") '4
'Cells(lauf_zeile, lauf_spalte + 4).Value = rst("part_no2") '5
Cells(lauf_zeile, lauf_spalte + 5).Value = rst("cavityqt") '6
Cells(lauf_zeile, lauf_spalte + 6).Value = rst("colcode") '7
Cells(lauf_zeile, lauf_spalte + 7).Value = rst("USERF##2") '8
Cells(lauf_zeile, lauf_spalte + 8).Value = rst("matcode") '9
'Cells(lauf_zeile, lauf_spalte + 9).Value = rst("supplier.suppname") '10
'Cells(lauf_zeile, lauf_spalte + 10).Value = rst("supppart.supppn") '11
Cells(lauf_zeile, lauf_spalte + 11).Value = rst("USERF##3") '12
Cells(lauf_zeile, lauf_spalte + 12).Value = rst("USERF##5") '13
Cells(lauf_zeile, lauf_spalte + 13).Value = rst("grpname") '13
lauf_zeile = lauf_zeile + 1
Loop
Range("A" & lauf_zeile_start & ":G" & lauf_zeile_start).AutoFilter
'Beenden der Datenbankverbindung und formatieren der Tabelle
rst.Close
db.Close
Cells.Select
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit
Range("A1").Select
Rows("1:1").RowHeight = 30
MsgBox ("Datenaktuallisierung erfolgreich !")
End
End Sub



Private Sub connect_db()
On Error GoTo ConError
form_pw.Show
db_password = form_pw.txt_pw
db_user = form_pw.txt_user
ConnectStr = "DRIVER={Oracle in OraHome92};UID= " & db_user & ";PWD=" & db_password & "; _
SERVER=chs"
Set db = OpenDatabase("", dbDriverNoPrompt, True, ConnectStr)
Exit Sub
ConError:
MsgBox ("Verbindungsaufbau zur Datenbank fehlgeschlagen!")
End
End Sub



Private Function GetDeCol(EnColor)
Select Case EnColor
Case "RT", "red"
FarbeDE = "rot"
Case "SW", "blk"
FarbeDE = "schwarz"
Case "BL", "blu"
FarbeDE = "blau"
Case "BR", "brn"
FarbeDE = "braun"
Case "GE", "yel"
FarbeDE = "gelb"
Case "GN", "grn"
FarbeDE = "grün"
Case "GR", "gry"
FarbeDE = "grau"
Case "NAT", "nat"
FarbeDE = "natur"
Case "OR", "org"
FarbeDE = "orange"
Case "VI", "vio"
FarbeDE = "violett"
Case "wht", "WS"
FarbeDE = "WEiß"
Case Else
FarbeDE = ""
End Select
GetDeCol = FarbeDE
End Function


Function GetHouseDef(PartNo As Variant) As String
Dim rst_HD As Recordset
Dim sql As String
'sql = "SELECT * FROM [CHS.HOUS_DEF]" ' 'sql = "SELECT * FROM [CHS.COMPONEN]" ' MsgBox (sql)
Set rst_HD = db.OpenRecordset(sql)
End Function


Anzeige
AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 12:33:00
ede
sorry, kann leider deins nicht nachvollziehen, bei mir funkt. es so:
wobei du dievariablen anpassen musst!

Sub con2oracle()
benutzer = "xyz"
kennwort = "pw_von_xyz"
dbserver = "dbServerName"
connstring = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=" & benutzer & _
";PWD=" & kennwort & _
";SERVER=" & dbserver
sql_statement = "select * from USER.TABELLE"
With Sheets("Abfrage").QueryTables.Add(Connection:=connstring, Destination:=Worksheets("Abfrage" _
).Range("A1"))
.BackgroundQuery = False
.Sql = sql_statement
.Refresh
.Delete
End With
End Sub


gruss

Anzeige
AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 13:13:20
Renee
Hi Thomas,
1. Es geht nicht ganz klar hervor, wo dieser Code überall verstreut ist. Aber generell würde ich Dir mal empfehlen überall ein Option Explicit als erste Codezeile. Damit kannst Du nicht deklarierte Variablen finden.
2. Zu Deiner Aussage

'sql = "SELECT * FROM [CHS.HOUS_DEF]" '


wenn das so ist, hast der betreffende User offensichtlich keinen Zugriff auf die CHS.HOUS_DEF table^in der oracle-DB. Diese Notation mit eckigen Klammern, ist mir für oracle kein Begriff. Hat es damit irgendeine Bewandtnis ?
Greetz Renee

Anzeige
AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 13:14:39
Renee
Hi ede,
Warum in aller Welt würdest Du immer wieder eine neues Query-Objekt addieren, wenn Du eine Abfrage machen willst ?
Greetz Renee

AW: Oracle-DB mit ODBC: Feld nicht gefunden
31.08.2007 16:13:00
Thomas
Danke für eure Hilfe, aber ich habe das Problem gelöst, indem ich statt DAO jetzt ADO verwende, damit funzet alles.
vlg. Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige