Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: obbiwahn am September 21, 2010, 10:41:10

Titel: Parameterabfrage abschalten!?
Beitrag von: obbiwahn am September 21, 2010, 10:41:10
Hallo,

in der DB sollen nach Auswahl einer Option aus einem Drop-Down-Menü zwei andere Felder mit den entsprechenden Werten befüllt werden.

Soweit funktioniert das auch.

ALLERDINGS

Muss ich den im Drop-Down-Menü gewählten Wert nochmal in einer Paramterabfrage eingeben.

Genau diese Paramterabfrage hätte ich gern abgeschaltet.

Kann mir jemand helfen?

Hier mal der betreffende Code:

Private Sub VB_AfterUpdate()
Dim xVB, Abfrage1 As String

On Error GoTo Fehler

xVB = VB
If IsNull(VB) Then Exit Sub

Abfrage1 = "SELECT tbl_VB.VB, tbl_VB.Region, tbl_VB.vbPLZ " & _
           "INTO [tbl_Abfragen_VB2] " & _
           "FROM [tbl_VB] " & _
           "Where (((tbl_VB.VB) = " & VB & "));"

DoCmd.SetWarnings False
DoCmd.RunSQL Abfrage1
DoCmd.SetWarnings True

Me!Region = DLast("Region", "tbl_Abfragen_VB2")
Me!vbPLZ = DLast("vbPLZ", "tbl_Abfragen_VB2")

Exit Sub

Fehler:
MsgBox "...", vbInformation, "Hinweis"

End Sub
Titel: Re: Parameterabfrage abschalten!?
Beitrag von: DF6GL am September 21, 2010, 12:43:20
Hallo,


Private Sub VB_AfterUpdate()
Dim Abfrage1 As String

On Error GoTo Fehler


If IsNull(Me!VB) Then Exit Sub

Abfrage1 = "SELECT tbl_VB.VB, tbl_VB.Region, tbl_VB.vbPLZ " & _
          "INTO [tbl_Abfragen_VB2] " & _
          "FROM [tbl_VB] " & _
          "Where tbl_VB.VB = " & Me!VB

Currentdb.Execute Abfrage1, dbFailOnError

Me!Region = DLookup("Region", "tbl_VB","VB = " & Me!VB )
Me!vbPLZ = DLookup("vbPLZ", "tbl_VB","VB = " & Me!VB )


Exit Sub

Fehler:
MsgBox "...", vbInformation, "Hinweis"

End Sub
Titel: Re: Parameterabfrage abschalten!?
Beitrag von: database am September 21, 2010, 12:55:53
Hallo,

du musst mal kontrollieren, warum die Abfrage nochmal ausgeführt wird, bzw wieso der Parameter überhaupt noch mal zum Tragen kommt.

Wenn es NICHT notwendig ist diese Abfrage auszuführen (geht aus deiner Beschreibung nicht hervor) solltest du sie löschen.

ABER:
Den SQL-String hast du aus dem Abfrageeditor kopiert, soweit ich das sehen kann - hast du etwa die Abfrage danach gespeichert?
Der Name Abfrage1 läßt diesen Schluß nämlich zu!

Wenn das so ist, wird hier ...


DoCmd.RunSQL Abfrage1


... eventuell die gespeicherte Abfrage ausgeführt! (und die enthält wahrscheinlich keinen Parameter dafür aber den Verweis auf eine Variable (VB) , die in einer gespeicherten Abfrage nicht ausgelesen werden kann)

Ändere auch folgendes:

Abfrage1 As String


auf


Dim strSQL as String


und dann ...

strSQL = "SELECT tbl_VB.VB, tbl_VB.Region, tbl_VB.vbPLZ " & _
           "INTO [tbl_Abfragen_VB2] " & _
           "FROM [tbl_VB] " & _
           "Where (((tbl_VB.VB) = " & VB & "));"


DoCmd.SetWarnings False

DoCmd.RunSQL strSQL

DoCmd.SetWarnings True



Vielleicht hilfts?

Grüße
Peter

Titel: Re: Parameterabfrage abschalten!?
Beitrag von: obbiwahn am September 21, 2010, 13:27:33
@DF6GL

Bei deiner Variante kommt immer nur meine Fehlermeldung (die mit den drei Punkten).


@database

Deine Variante läufte genauso wie meine ab - es kommt weiterhin die Parameterabfrage.


INFO: Wenn ich in der Parameterabfrage den Wert eingebe, den ich vorher per Drop-Down gewählt habe, stellt er auch die richtigen Werte dar. Wenn ich die Paramterabfrage abbreche, dann stellt er keine Werte dar.

Und ja, im Prinzip habe ich den Code aus einer funktionierende Abfrage kopiert und umgeschrieben!
Titel: Re: Parameterabfrage abschalten!?
Beitrag von: database am September 21, 2010, 13:37:27
Hallo,

dann mußt du feststellen an welcher Stelle der Aufruf erfolgt, diese Abfrage muss ja die Datenherkunft für irgendwas darstellen. ::)
Dass die Aufgerufen wird ist ja kein Feature von Access sondern das hat einen Grund  ;)

ist diese Abfrage die Datenherkunft für dein Formular?
Zitatim Prinzip habe ich den Code aus einer funktionierende Abfrage kopiert

Schlimmstenfalls lade die DB komprimiert mit ein paar Spieldaten hier hoch, aus dem Codeausschnitt lässt sich nicht festlstellen wo hier ein Aufruf stattfindet und wie der unterbunden werden kann
Titel: Re: Parameterabfrage abschalten!?
Beitrag von: obbiwahn am September 21, 2010, 13:42:59
Ich frage auch mal umgekehrt ...

Kann man diese Abfrage auch einfacher gestalten?

Im Prinzip wählt der Nutzer im Hauptformular aus einer Drop-Down-Liste einen Eintrag aus.
Dieser Eintrag (aus den Vorgegebenen) entstammt auch der Datenquelle (Spalte "VB").
Jetzt sollen zu dem ausgewählten VB aus der Datenquelle die Spalteninhalte der Spalten "vbPLZ" und "Region" ins Hauptformular "übertragen" werden.

Titel: Re: Parameterabfrage abschalten!?
Beitrag von: database am September 21, 2010, 17:11:38
Hallo,

im Prinzip gibt's alles in verschiedenen Ausführungen ...  8)

nur erscheint mir da das Konzept nicht ganz rein und klar - du liest Daten aus der Tabelle tbl_VB und trägst sie 1:1 in die Tabelle tbl_Abfragen_VB2 ein.

Grundsätzlich ist so etwas nichts Verwerfliches allerdings - da du auch Region und PLZ überträgst, im gegenständlichen Fall nicht notwendig
weil du diese Werte ja jederzeit auch über eine Abfrage aus den beteiligten Tabellen (in tbl_VB und tbl_Abfragen_VB2 in Beziehung gesetzt)
über den Schlüssel VB ermitteln kannst. Deine Vorgehensweise widerspricht den Normalisierungsregeln.

Da ich mir deswegen in einem anderen Thread gestern von Guru und Gott mehr oder weniger eine Rüge eingefangen habe  ;D ;D ;), muss ich dich darauf hinweisen!  :D

Falls die beiden mitlesen: Die Kurve hab' ich doch sauber hingekriegt oder?  :-\ ::)

Zu deiner Frage aber:

Du KÖNNTEST das Kombi um genau diese beiden Felder erweitern und nach Auswahl einer VB  die Werte für die beiden Felder aus dem Kombifeld direkt beziehen

Me!Region = Me!VB.Column(1)
Me!vbPLZ = Me!VB.Column(2)

Die richtigen Nummern der Spalten musst du ermitteln ...  erste Spalte im Kombi = 0 !