Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
800to804
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
800to804
800to804
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array-Abfrage mit variablem Wert

Array-Abfrage mit variablem Wert
10.09.2006 22:31:53
bully
Hallo Excel-Freunde,
ich brauche wieder mal Hilfe.
Habe folgende Abfrage erstellt:

Sub Import()
' Import Makro
' Makro am 08.09.2006 von Alfred Bürki aufgezeichnet
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel-Dateien;DBQ=A:\sauen.xls;DefaultDir=A:;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("A6"))
.CommandText = Array( _
"SELECT `SAUEN$`.Bezeichnung, `SAUEN$`.Gruppe, `SAUEN$`.Deckdatum, `SAUEN$`.Wurfdatum, `SAUEN$`.Wurf" & Chr(13) & "" & Chr(10) & "FROM `A:\SAUEN`.`SAUEN$` `SAUEN$`" & Chr(13) & "" & Chr(10) & "WHERE `SAUEN$`.Gruppe=51" & Chr(13) & "" & Chr(10) & "ORDER BY `SAUEN$`.Deckdatum" _
)
.Name = "Abfrage von Excel-Dateien"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

Frage: Wie kann ich den Wert "WHERE `SAUEN$`.Gruppe=51" durch das Anzeigen eiener Inputbox ersetzen, in der die Eingabewerte 1-53 möglich sind?
Danke für Eure Hilfe
bully

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array-Abfrage mit variablem Wert
10.09.2006 22:43:28
ramses
Hallo
probier mal
Option Explicit

Sub Import()
Dim srcNr As Integer
Dim Qe As Integer
On Error Resume Next
Redo:
srcNr = InputBox("Geben Sie die Suchnummer ein", "Suchbegriff", 1)
If Not IsNumeric(srcNr) Or srcNr < 1 Or srcNr > 53 Then
Qe = MsgBox("Der Suchbegriff ist falsch" & "Möchten Sie weitersuchen ?", vbQuestion + vbYesNo, "Fehler")
If Qe = vbYes Then
GoTo Redo
Else
Exit Sub
End If
End If
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel-Dateien;DBQ=A:\sauen.xls;DefaultDir=A:;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("A6"))
.CommandText = Array( _
"SELECT `SAUEN$`.Bezeichnung, `SAUEN$`.Gruppe, `SAUEN$`.Deckdatum, `SAUEN$`.Wurfdatum, `SAUEN$`.Wurf" & Chr(13) & "" & Chr(10) & "FROM `A:\SAUEN`.`SAUEN$` `SAUEN$`" & Chr(13) & "" & Chr(10) & "WHERE `SAUEN$`.Gruppe=" & srcNr & "" & Chr(13) & "" & Chr(10) & "ORDER BY `SAUEN$`.Deckdatum" _
)
.Name = "Abfrage von Excel-Dateien"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

Gruss Rainer
Anzeige
AW: Array-Abfrage mit variablem Wert
10.09.2006 23:03:22
bully
Hallo Rainer,
danke für deine schnelle Antwort!
Es funktioniert fast fehlerfrei, es wird aber unabhängig vom in der inputbox angegebenen Wert, das Resultat mit dem Abfragewert 51 angezeigt! Woran kann das liegen?
bully
AW: Array-Abfrage mit variablem Wert
10.09.2006 23:17:27
ramses
Hallo
Tut mir leid, kann ich nicht nachvollziehen.
Gruss Rainer
AW: Array-Abfrage mit variablem Wert
10.09.2006 23:31:05
bully
Hallo Rainer,
ich habe den Fehler gefunden, ich hatte den Wert 51 nicht durch " & srcNr & "" ersetzt. Jetzt werden aber keine Daten mehr übertragen. Es erscheint auch keine Fehlermeldung.
bully
AW: Array-Abfrage mit variablem Wert
10.09.2006 23:42:22
ramses
Hallo
Setz mal die Feherbehandlung wieder in Kraft, und wandle den Wert um
Option Explicit

Sub Import()
Dim srcNr As Integer
Dim Qe As Integer
On Error Resume Next
Redo:
srcNr = InputBox("Geben Sie die Suchnummer ein", "Suchbegriff", 1)
If Not IsNumeric(srcNr) Or srcNr < 1 Or srcNr > 53 Then
Qe = MsgBox("Der Suchbegriff ist falsch" & "Möchten Sie weitersuchen ?", vbQuestion + vbYesNo, "Fehler")
If Qe = vbYes Then
GoTo Redo
Else
Exit Sub
End If
End If
On Error GoTo 0
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel-Dateien;DBQ=A:\sauen.xls;DefaultDir=A:;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("A6"))
.CommandText = Array( _
"SELECT `SAUEN$`.Bezeichnung, `SAUEN$`.Gruppe, `SAUEN$`.Deckdatum, `SAUEN$`.Wurfdatum, `SAUEN$`.Wurf" & Chr(13) & "" & Chr(10) & "FROM `A:\SAUEN`.`SAUEN$` `SAUEN$`" & Chr(13) & "" & Chr(10) & "WHERE `SAUEN$`.Gruppe=" & CInt(srcNr) & "" & Chr(13) & "" & Chr(10) & "ORDER BY `SAUEN$`.Deckdatum" _
)
.Name = "Abfrage von Excel-Dateien"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub

Kopiere einfach den Code
Gruss Rainer
Anzeige
AW: Array-Abfrage mit variablem Wert
10.09.2006 23:04:23
EtoPHG
Hallo bully,
Hallo Rainer,
Nicht das ich mich da Einmischen möchte, ich tu's trotzdem.
1). Scheint es mir fragwürdig, mit SQL auf eine andere Excel-Datei zuzugreifen, dafür wären reine Excelfunktion wesentlich effizienter.
2). Addiert der Code des Makros jedesmal ein neues Query-Objekt in die Exceldatei, was diese ziemlich schnelle explodieren lässt. Da wäre es einfacher, den SQL eines einmal bestehenden Queryobjekts zu manipulieren (wie von Rainer vorgeschlager) und anschliessend nur noch einen .Refresh auf das Objekt auszuführen.
Gruss Hansueli
AW: Array-Abfrage mit variablem Wert
10.09.2006 23:13:33
bully
Hallo Hansueli,
da strapazierst du mein Excel-Wissen einwenig. Wie müsste die Abfrage über die Excelfuntionen denn aussehen?
Anzeige
AW: Array-Abfrage mit variablem Wert
10.09.2006 23:56:43
EtoPHG
Hallo Bully,
Also Deine Datei SAUEN.XLS müsste nach meinen Recherchen ungefähr diesen Aufbau haben:
https://www.herber.de/bbs/user/36558.xls
(Sichere diese mal in ein Testverzeichnis unter dem Namen SAUEN.XLS)
Das wäre dann die SucheSauen.xls

Die Datei https://www.herber.de/bbs/user/36559.xls wurde aus Datenschutzgründen gelöscht

(Sichere diese in das GLEICHE Testverzeichnis unter dem Namen SucheSauen.xls)
jezt öffne beide Dateien. In Der SUchSauen-Datei kannste in B1 eine Gruppe eingeben und bekommst die Daten aus der Sauen-Datei.
Ohne SQL, ist das nicht sauglatt ?
Gruss Hansueli
Anzeige
AW: Array-Abfrage mit variablem Wert
11.09.2006 00:19:10
bully
Hallo Hansueli,
das ist nicht nur sauglatt, sondern noch saugut dazu. Danke vielmals für deine Lösung. Ich werde sie morgen noch anpassen müssen, weil meine "sucheSauen.xls" noch etwas umfangreicher ist. Aber der Daten-Import funktionier so einwandfrei.
Nochmals vielen Dank
Gruss bully
AW: Array-Abfrage mit variablem Wert
11.09.2006 14:55:14
bully
Hallo Hansueli,
beim anpassen deiner Dateien bin ich ziemlich schnell auf ein weiters Problem gestossen. In meiner "Sauen.xls" steht ein Datensatz pro Zeile, mit Werten in den Spalten A-AE. Für meine Ausertung benötige ich aber nur die Daten aus den erwähnten Spalten:
Bezeichnung: = 'A:\[SAUEN.xls]Sauen'!$B:$B
Gruppe: = 'A:\[SAUEN.xls]Sauen'!$G:$G
Deckdatum: = 'A:\[SAUEN.xls]Sauen'!$T:$T
Wurfdatum: = 'A:\[SAUEN.xls]Sauen'!$U:$U
Wurf: = 'A:\[SAUEN.xls]Sauen'!$AA:$AA
Bingt man den selektiven Auszug mit den Excel-Formeln auch hin.
Gruss bully
P.S.: Wollte eigentilch eine Demo-Sauen.xls zum Server hochladen, der Server hatte aber etwas dagegen!!??
Anzeige
AW: Array-Abfrage mit variablem Wert
11.09.2006 15:27:12
EtoPHG
Hallo Bully,
In den Formeln steht jeweils am Schluss ;SPALTE()-1
diesen Begriff ersetzt Du durch:
2 für B (Bezeichung)
7 für G (Gruppe)
20 für T (Deckdatum)
21 für U (Wurfdatum)
27 fpr AA (Wurf)
Diese Zahlen entsprechen den Spaltennummern. Zur Rausfinden gehe in eine leere Zelle der Spalte und schreibe =Spalte().
Gruss Hansueli
AW: Array-Abfrage mit variablem Wert
11.09.2006 19:18:56
bully
Hallo Hansueli,
es funktoniert mit dem Auslesen der einzelnen Spalten. Jetzt habe ich die Datei ausgiebig getestet und noch einen letzten kleinen Schönheitsfehler entdeckt. Es betrifft auch einen Sonderfall. Das Selektionskriterium ist ja die Spalte mit den Gruppennummern $G:$G. Jetzt kommt es vor, dass Tiere die vorzeitig zur Schlachtbank gehen noch in der Gruppe angezeigt werden obwohl ich die Gruppennummer mit dem Wert 0 überschrieben habe. Können diese auch noch herausgefiltert werden? Dann wäre die Datei perfekt.
Vielen Dank für deine Mühe mit einem Anfänger
Gruss bully
Anzeige
AW: Array-Abfrage mit variablem Wert
11.09.2006 21:22:14
EtoPHG
Hallo Bully,
Es sind immer diese verfl... Kleinigkeiten, die das Konzept komplett zerstören können.
Wenn aus der Liste "rausgefiltert" werden soll, wird das Ganze viel komplizierter, da dann nicht mehr ein zusammenhängender Bereich mit der Gruppennummer besteht.
Ein Vorschlag mit a) Einer zusätzlichen Kolonne in der Datendatei (Sauen), ob geschlachtet JA/NEIN und b) einer zusätzlichen Kolonne B in der Suchdatei inkl. einer Bedingten Formatierung (Durchgestrichen) falls geschlachtet, wäre ein Vorschlag wie man's mit den bestehenden Formeln lösen könnte. Die Spalten A und B kannst Du wieder verbergen, wie in der Originaldatei. Die Bedingte Formatierung der Felder kannst Du auch von Unterstrichen auf z.B. Weisse Schrift umstellen, dann siehst Du den Eintrag nicht, aber ich finde durchgestrichen, für geschlachtet auch nicht so schlecht.
Daten: https://www.herber.de/bbs/user/36587.xls
Suchen:

Die Datei https://www.herber.de/bbs/user/36588.xls wurde aus Datenschutzgründen gelöscht

Gruss Hansueli
Anzeige
AW: Danke für die Unterstützung
11.09.2006 21:48:50
bully
Hallo Hansueli,
da es sich bei den Nullwerten nur um seltene Fälle handelt, kann ich damit leben. Wenn es einfach zu lösen gewesen wäre o.k. aber so lass ich's mal bleiben.
Nochmals besten Dank, ohne dich hätte ich es wohl kaum geschafft.
Gruss bully

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige