Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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
Inhaltsverzeichnis

Datum aus Zelle nehmen Abfrage ODBC

Datum aus Zelle nehmen Abfrage ODBC
08.06.2009 15:38:17
lisa
Hallo zusammen
In der Recherche gibt es vielerlei Diskusionen über diese Thema, leider aber weiß ich nicht es für mich umzusetzen, deswegen die Frage an die Experten nämlich Euch.
Ich habe mir eine Datenbankabfrage ODBC erstellt!
Ich habe in der Abfrage auch mein Abfragedatum integriert.
Nun zu meinem Problem:
Das Abfragedatum möchte ich gern aus einer Zelle übernommen haben. Nur wie?
Das ist meine SQL- Anweisung
SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE
FROM H2.MAT_BUCHUNG MAT_BUCHUNG
WHERE (MAT_BUCHUNG.BU_DAT Like '20090423%') AND (MAT_BUCHUNG.WAB_ART Like '3%')
und hier mein Macro:
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC for Oracle};UID=il;SERVER=p;", Destination:= _
Range("A1"))
.CommandText = Array( _
"SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '20090423%') AND (MAT_BUCH" _
, "UNG.WAB_ART Like '3%')")
.Name = "Matbuchung"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Dokumente und Einstellungen\m\Anwendungsdaten\Microsoft\Abfragen\Matbuchung.dqy"
.Refresh BackgroundQuery:=False
End With
End Sub
Hat hier jemand eine Idee!?
Danke für die Hilfe
Lisa

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
08.06.2009 15:44:34
Ramses
Hallo
Probiers mal so
.CommandText = Array( _
"SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like " & Range("A1") & "') AND (MAT_BUCHUNG.WAB_ART Like '3%')")
Auf das Leerzeichen vor dem " " & " achten
Gruss Rainer
AW: Datum aus Zelle nehmen Abfrage ODBC
08.06.2009 16:14:46
lisa
Hallo Rainer, dass ging ja fix!
Ich habe den Code so übernommen:
"SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '" & Range("A1") & "') AND (MAT_BUCH" _
, "UNG.WAB_ART Like '3%')")
Alles was ich bekomme sind die Überschriften, sonst nichts.
Übernommen sollte eigendlich alles richtig sein. Hast du noch eventuell noch eine Idee?
Die Datumzelle habe ich normal auf Datum TT.MM.JJJJ formatiert.
Herzlichen dank für deine Bemühungen.
Lisa
Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
08.06.2009 16:50:51
Ramses
Hallo
Das ist wieder das verflixte DAtumsformat in der SQL-Abfrage
Probier mal statt
Like " & Range("A1") & "') AND
die Anweisung
Like '#" & format(Range("A1"),"DD/MM/YYYY") & "#') AND
Wenn es immer noch nichts bringt mal die Hochkommas weglassen und als nächstes die "#" weglassen
Gruss Rainer
AW: Datum aus Zelle nehmen Abfrage ODBC
08.06.2009 17:26:00
Luschi
Hallo Lisa,
wenn diese Bedingung (Like '20090423%') Ergebnisse liefert, dann muß man die Inhalt von Range("A1") auch so übergegen (ohne Zwischenpunkte und in der Reihenfolgen JahrMonatTag)
Dim s As String
s = Range("A1").Text
s = Year(s) & Right("0" & Month(s), 2) & Right("0" & Day(s), 2) & "%"
...
MAT_BUCHUNG.BU_DAT Like '" & s & "') AND
Gruß von Luschi
aus klein-Paris
PS: Das einfache Hochkomma darf nicht weggelassen werden sondern ist Pflicht.
Das Doppelkreuz (#) ist Access-typisch und bei SQL-Datenbanken nicht erforderlich.
Das %-Zeichen sorgt dafür, daß alle Datensätze für den entsprechenden Tag
gefunden werden, denn im Tabellenfeld 'MAT_BUCHUNG.BU_DAT ' wird noch die Tageszeit mitgeführt.
Beachte auch, daß bei dieser Zeichenkette ('") beim 1. Mal zuerst das einfache Hochkomma und dann die Anführungsstriche und beim 2. Mal zuerst die Anführungsstriche und dann das einfache Hochkomma geschrieben werden muß.
Die Right()-Funktion sorgt dafür, daß Monat und Tag immer 2-stellig übergeben wird (falls erforderlich mit führender Null.
Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
09.06.2009 09:35:25
lisa
Hallo zusammen
Ich habe beide Varianten ausprobiert und bekomme es nicht zum laufen.
Luschi
Ich bekomme einen allg. ODBC Debugger!
So sieht nun mein Macro aus!
Dim s As String
s = Range("A1").Text
s = Year(s) & Right("0" & Month(s), 2) & Right("0" & Day(s), 2) & "%"
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC for Oracle};UID=il;PSW=il;SERVER=abp;", Destination:= _
Range("A2"))
.CommandText = Array( _
"SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '" & s & "') AND (MAT_BUCH" _
, "UNG.WAB_ART Like '3%')")
Ich habe keinen Schimmer was ich hier machen soll.
Rainer
Auch hier habe ich alle Varianten ausprobiert aber ohne Erfolg.
Was mache ich falsch?
Ich werde mal noch etwas Rumgooglen
Vieleicht fällt euch ja noch was ein. Danke jedenfalls für eure Bemühungen.
Lisa
Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
09.06.2009 11:35:52
Luschi
Hallo Lisa,
so sollte es klappen:

sDatum = Range("A1").Text
sDatum = Year(s) & Right("0" & Month(s), 2) & Right("0" & Day(s), 2) & "%"
sCT = "SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, " & _
"MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM " & _
"HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '" & s & "')" & _
"AND (MAT_BUCHUNG.WAB_ART Like '3%')"
'kontrollieren, ob der CommandText-String richtig zusammengesetzt wurde
'MsgBox sCT
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC for Oracle};UID=il;PSW=il;SERVER=abp;", _
Destination:=ActiveSheet.Range("A2"))
.CommandText = sCT
'o d e r
.CommandText = Array(sCT)
End With

Gruß von Luschi
aus klein-Paris

Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
09.06.2009 12:23:16
lisa
Hallo Luschi
Ich glaube ich bin zu bl... oder stehe auf dem Schlauch. Es will nicht klappen!!!!!!
Sieh dir mal das vollständige Makro an, ich habe es so zusammengesetzt, bekomme aber den gleichen allg. ODBC- Fehler und in der Zeile bleibt mein Macro stehen.
.Refresh BackgroundQuery:=False

Sub Makro1()
sDatum = Range("A1").Text
sDatum = Year(s) & Right("0" & Month(s), 2) & Right("0" & Day(s), 2) & "%"
sCT = "SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, " & _
"MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM " & _
"HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '" & s & "')" & _
"AND (MAT_BUCHUNG.WAB_ART Like '3%')"
'kontrollieren, ob der CommandText-String richtig zusammengesetzt wurde
'MsgBox sCT
'.CommandText = sCT
'o d e r
'.CommandText = Array(sCT)
'End With
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC for Oracle};UID=il;PSW=il;SERVER=abp;", Destination:= _
Range("A2"))
.CommandText = Array( _
"SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, MAT_BUCHUNG.BU_ART,  _
MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE  FROM HARK2.MAT_BUCHUNG MAT_BUCHUNG  WHERE (MAT_BUCHUNG.BU_DAT Like '" & s & "') AND (MAT_BUCH" _
, "UNG.WAB_ART Like '3%')")
.Name = "Matbuchung"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Dokumente und Einstellungen\m\Anwendungsdaten\Microsoft\Abfragen\Matbuchung.dqy"
.Refresh BackgroundQuery:=False   'hier bleibt das Macro stehen!'
End With
End Sub


Hast du noch eine Idee?
liebe Grüße Lisa

Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
09.06.2009 15:00:54
Luschi
Hallo Lisa,
& s & muß jetzt so heißen: & sDatum &
ich hatte den Variablen-Namem s gegen sDatum getauscht.
Gruß von Luschi
aus klein-Paris
PS: Sorry, war mein Fehler!
AW: Datum aus Zelle nehmen Abfrage ODBC
09.06.2009 16:36:01
lisa
Hallo
Ich habe es geä. und ich bekomme es nicht hin.
Ändere ich diese Zeile so ab,
.CommandText = Array(sCT) ( _
bekomme ich einen Laufzeitfehler Index ausserhalb des gültigen Bereichs
Ändere ich sie so ab,
.CommandText = sCT ( _
Laufzeitfehler Typenunverträglich
Lass ich die Zeile wie sie ist,
den Laufzeitfehler Allgemeiner ODBC- Fehler
?
Habe ich etwas falsch geä?
Ich bin Zeile für Zeile alles durchgegangen und denke das ich alles so geä. habe wie du es vorgeschlagen hast. Leider ohne Erfolg.
Vieleicht, wenn du noch einmal Zeit hast, kannst du dir es noch einmal ansehen.
sDatum = Range("A1").Text
sDatum = Year(s) & Right("0" & Month(s), 2) & Right("0" & Day(s), 2) & "%"
sCT = "SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, " & _
"MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM " & _
"HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '" & sDatum & "')" & _
"AND (MAT_BUCHUNG.WAB_ART Like '3%')"
'kontrollieren, ob der CommandText-String richtig zusammengesetzt wurde
'MsgBox sCT
'.CommandText = sCT
'o d e r
'.CommandText = Array(sCT)
'End With
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC for Oracle};UID=il;PSW=il;SERVER=abp;", Destination:= _
Range("A2"))
.CommandText = sCT( _
"SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE FROM HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '" & sDatum & "') AND (MAT_BUCH" _
, "UNG.WAB_ART Like '3%')")
.Name = "Matbuchung"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Dokumente und Einstellungen\m\Anwendungsdaten\Microsoft\Abfragen\Matbuchung.dqy"
.Refresh BackgroundQuery:=False
End With
End Sub
Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
09.06.2009 18:06:00
Luschi
Hallo Lisa,
in der Variavle sCT steht der zusammengebastelte String für die CommandText-Eigenschaft der ODBC-Verbindung.
Und dieser String wird übergeben bei
.CommandText=Array(sCT)
oder auch so
.CommandText = sCT
Mit
'kontrollieren, ob der CommandText-String richtig zusammengesetzt wurde
'MsgBox sCT
wollte ich eigentlich nur mittteilen, daß man sich den Inhalt der Variablen sCT anzeigen lassen kann,
indem man das einfache Hochkomma (') vor MsgBox entfernt; also
'kontrollieren, ob der CommandText-String richtig zusammengesetzt wurde
MsgBox sCT
Dann erscheint ein Fenster, indem man sieht wie der SQL_String, der der Eigenschaft .CommandText übergeben wird aufgebaut ist und kann
eventuelle Fehler erkennen (fehlende Leerzeichen, immer noch falsches Datumsformat, usw.).
Wenn es immer noch nicht funktionieren sollte, dann speichere den Vba-Code in eine Text-Datei und lade
diese txt-Datei ins Herber-Forum (dafür gibt es den LinK 'Hier geht es zum File-Upload') und ich korrigiere dann den Inhalt der Textdatei.
Mir ist klar, das es Nicht-Vba-Programmierern schwer fällt, gegebenen Beispielcode in der Praxis einfach umzusetzen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
10.06.2009 09:21:02
lisa
Hallo Luschi
Ich habe mir nun einmal die MSG Box anzeigen lassen und hier wird an der Stelle des Datums folgendes angezeigt:
(MAT_BUCHUNG.BU_DAT Like'18991230%) angezeigt. egal welches Datum ich eingebe.
Ich habe hier den Quellcode in einem Doc. angefügt!
https://www.herber.de/bbs/user/62328.doc
herzlichen Dank
Lisa
AW: Datum aus Zelle nehmen Abfrage ODBC
10.06.2009 10:03:44
Luschi
Hallo Lisa,
mach es mal so:

Sub Makro1()
Dim sDatum1 As Date, sDatum2 As String, sCT As String
sDatum1 = Activesheet.Range("A1").Value
sDatum2 = Year(sDatum1) & Right("0" & Month(sDatum1), 2) & _
Right("0" & Day(sDatum1), 2) & "%"
sCT = "SELECT MAT_BUCHUNG.BU_DAT, MAT_BUCHUNG.ART_NR, MAT_BUCHUNG.MST_NR, " & _
"MAT_BUCHUNG.BU_ART, MAT_BUCHUNG.CHARGE_NR_V, MAT_BUCHUNG.BU_MENGE " & _
"FROM HARK2.MAT_BUCHUNG MAT_BUCHUNG WHERE (MAT_BUCHUNG.BU_DAT Like '" & _
sDatum2 & "') AND (MAT_BUCHUNG.WAB_ART Like '3%')"
'kontrollieren, ob der CommandText-String richtig zusammengesetzt wurde
'MsgBox sCT
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER={Microsoft ODBC for Oracle};UID=il;PSW=il;SERVER=abp;", _
Destination:= ActiveSheet.Range("A2"))
.CommandText = sCT
'o d e r
'.CommandText = Array(sCT)
.Name = "Matbuchung"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Dokumente und Einstellungen\m\Anwendungsdaten\Microsoft\Abfragen\Matbuchung.dqy"
.Refresh BackgroundQuery:=False
End With
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
AW: Datum aus Zelle nehmen Abfrage ODBC
10.06.2009 12:11:27
lisa
Hallo Luschi
Laut der MsgBox wird das Datum nun richtig aufgelöst!
Ich bekomme aber nach wievor den gleichen Laufzeitfehler! allg. ODBC
und die Stelle wird im Quellcode makiert:
.Refresh BackgroundQuery:=False
Wenn es so garkeinen Sinn macht, dann muss ich halt im Quellcode immer das Datum eingeben.
Es ist zwar umständlich aber ich möchte dich auch nicht an den Rand des Wahnsinns bringen.
Ich werde versuchen, wenn auch ohne das richtige Know how, selbst noch ein wenig rumzustricken.
Jedenfalls ganz herzlichen Dank für die Bemühungen
Liebe Grüße Lisa

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige