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