Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Mehrfachauswahl als Kriterium für Abfrage

Begonnen von Martin_8, September 22, 2010, 14:23:16

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,

es fehlen Leerzeichen vor "From" und "Order"
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Martin_8

Schönen guten morgen,

tut mir leid das ich nochmal nachfragen muss, aber ich bekomm nach der lösung des ersten, gleich den zweiten fehler:

Monitoring kann das in Ihrem Ausdruck angesprochene Feld 'uf_zeitraum' nicht finden.

und beim debuggen makiert er die zeile im code:

Me!uf_zeitraum.Form.RecordSource = strSQL

hab geschaut, das uf heißt so und ist auch alles richtig geschrieben.
an was kann das liegen?

danke schön nochmal :)

DF6GL

Hallo,

WO hast Du geschaut?

Ich bin mir sicher, dass Du NICHT im Eigenschaftenfenster unter "Alle" im Eigenschaftenfeld "Name" bei markiertem UFO-Steuerelement nachgelesen hast.   ;)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Martin_8

oh man danke, blöder tippfehler... sorry, ich weiß, is nich leicht mit mir ;)

aber wenn ich jetzt sag das wieder ein fehler kommt, gibts ärger oder? ;)

ich verstehs nicht. wenn ich den sql string nehme, eine abfrage draus mache funktioniert er einwandfrei. Wenn ich dann noch per hand das Kriterium In (1;2) eingebe, gibt er mir auch das richtige aus.
woran liegt sowas, dann dann der fehler siehe anhang kommt?

hier mal der sql string wenn ich ihn per hand in eine abfrage bau:
SELECT tbl_company.fname, tbl_figures.kbez, tbl_entry_detail.ewert, tbl_figures.kennid, tbl_company.fid, tbl_entry.e_datum
FROM tbl_figures INNER JOIN (tbl_company INNER JOIN (tbl_entry INNER JOIN tbl_entry_detail ON tbl_entry.eid = tbl_entry_detail.erfassung) ON tbl_company.fid = tbl_entry.firma) ON tbl_figures.kennid = tbl_entry_detail.kennzahl
WHERE (((tbl_figures.kennid) In (1,2)))
ORDER BY tbl_figures.kennid


und hier noch der ganze code:

Private Sub Befehl56_Click()
Dim strKrit As String, strKrit1 As String, itm, strSQL As String
strSQL = " SELECT tbl_company.fname, tbl_figures.kbez, tbl_entry_detail.ewert, tbl_figures.kennid, tbl_company.fid, tbl_entry.e_datum" & _
" FROM tbl_figures INNER JOIN (tbl_company INNER JOIN (tbl_entry INNER JOIN tbl_entry_detail ON tbl_entry.eid = tbl_entry_detail.erfassung) ON tbl_company.fid = tbl_entry.firma) ON tbl_figures.kennid = tbl_entry_detail.kennzahl" & _
" ORDER BY tbl_figures.kennid"

For Each itm In Me!liste_kennungen.ItemsSelected
strKrit = strKrit & ";" & Me!liste_kennungen.Column(0, itm)
Next


If Len(strKrit) > 1 Then
strKrit = " kennid In (" & Mid(strKrit, 2) & ")"
End If
strKrit1 = " e_datum between " & Format(Nz(Me!txt_datevon, #1/1/1900#), "\#dd.mm.yyyy\#") & " and " & Format(Nz(Me!txt_datebis, #12/31/2100#), "\#dd.mm.yyyy\#")
If Len(strKrit) > 1 Then
strKrit = strKrit & " and " & strKrit1
Else
strKrit = strKrit1
End If

strSQL = strSQL & " where " & strKrit
Debug.Print strKrit
Me!uf_timespace.Form.RecordSource = strSQL

End Sub


Bei Debuggen wird die letzte Zeile vor dem End Sub makiert.

Ich weiß, so laien wie ich sollten wohl die finger davon lassen ;)

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

naja, Ärger hast Du(!) ja schon   ;D ;)

Jetzt ist es aber eine andere Fehlermeldung..


strKrit = strKrit & "," & Me!liste_kennungen.Column(0, itm)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Martin_8

Hallo,

das ändert leider nichts am Fehler.
bleibt der gleich :(
ich muss doch wohl jetzt nicht aufgeben?! so kurz vorm ziel

DF6GL

Hallo,

mhmm,  debuggen mußt Du halt selber...  --> Haltepunkt an den Code-Anfang setzen und mit F8 im Einzelschritt durch fahren. Bei jedem Statement die Variableninhalte prüfen, ob sie die erwarteten Werte haben.

Wie heißt jetzt die akt. Fehlermeldung (nicht nur die Fehlernummer)?

Schreib mal statt Debug.Print strKrit  Debug.Print strSQL und kopiere den SQL-String aus dem Direktfenster hierher 
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Martin_8

Puh, jetz muss ich sagen war ich schon etwas überfordert...

Also, ich hab das mit F8 mal probiert, aber glaub ich nicht hinbekommen, wie ich die werte prüf etc.

Fehler ist der gleiche wie im anghängten bild vorher. Steht ja der text auch dabei.

ich hab dir jetzt hier mal die datenbank meiner ganzen datenbanken ran gehängt, in die das rein soll.
damit du dich vllt mal besser rein finden kannst.
Es geht um das Formular "frm_timespace" und da im genauern um das Unterformular bei "sorty by Date" Hier soll eben wenn möglich die ausgewählten kennzahlen angezeigt werden.

Hilft das was?

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

es sind halt immer wieder andere Fehler...

so läuft der Code:

Private Sub Befehl56_Click()
Dim strKrit As String, strKrit1 As String, itm, strSQL As String
strSQL = " SELECT tbl_company.fname, tbl_figures.kbez, tbl_entry_detail.ewert, tbl_figures.kennid, tbl_company.fid, tbl_entry.e_datum" & _
" FROM tbl_figures INNER JOIN (tbl_company INNER JOIN (tbl_entry INNER JOIN tbl_entry_detail ON tbl_entry.eid = tbl_entry_detail.erfassung) ON tbl_company.fid = tbl_entry.firma) ON tbl_figures.kennid = tbl_entry_detail.kennzahl"


For Each itm In Me!liste_kennungen.ItemsSelected
strKrit = strKrit & "," & Me!liste_kennungen.Column(0, itm)
Next


If Len(strKrit) > 1 Then
strKrit = " kennid In (" & Mid(strKrit, 2) & ")"
End If
strKrit1 = " e_datum between " & Format(Nz(Me!txt_datevon, #1/1/1900#), "\#mm\/dd\/yyyy\#") & " and " & Format(Nz(Me!txt_datebis, #12/31/2100#), "\#mm\/dd\/yyyy\#")
If Len(strKrit) > 1 Then
strKrit = strKrit & " and " & strKrit1
Else
strKrit = strKrit1
End If

strSQL = strSQL & " where " & strKrit & " ORDER BY tbl_figures.kennid"

Debug.Print strSQL
Me!uf_timespace.Form.RecordSource = strSQL
End Sub



wobei im UF das Feld "Summevonewert" nicht im SQL-String vorkommt und demzufolge als fehlerhaft angezeigt wird.
Ich sehe aber auch nicht, was genau da eigentlich gemacht werden soll...

Vielleicht soll es so aussehen:


Private Sub Befehl56_Click()
Dim strKrit As String, strKrit1 As String, itm, strSQL As String
strSQL = " SELECT  tbl_figures.kbez,  sum(tbl_entry_detail.ewert) as Summevonewert  " & _
" FROM tbl_figures INNER JOIN (tbl_company INNER JOIN (tbl_entry INNER JOIN tbl_entry_detail ON tbl_entry.eid = tbl_entry_detail.erfassung) ON tbl_company.fid = tbl_entry.firma) ON tbl_figures.kennid = tbl_entry_detail.kennzahl"


For Each itm In Me!liste_kennungen.ItemsSelected
strKrit = strKrit & "," & Me!liste_kennungen.Column(0, itm)
Next


If Len(strKrit) > 1 Then
strKrit = " kennid In (" & Mid(strKrit, 2) & ")"
End If
strKrit1 = " e_datum between " & Format(Nz(Me!txt_datevon, #1/1/1900#), "\#mm\/dd\/yyyy\#") & " and " & Format(Nz(Me!txt_datebis, #12/31/2100#), "\#mm\/dd\/yyyy\#")
If Len(strKrit) > 1 Then
strKrit = strKrit & " and " & strKrit1
Else
strKrit = strKrit1
End If

strSQL = strSQL & " where " & strKrit & " group BY tbl_figures.kbez"

Debug.Print strSQL
Me!uf_timespace.Form.RecordSource = strSQL
End Sub
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Martin_8

Ja der zweite code scheint ganz gut sein :)
es soll zu jeder ausgewählten kennzahl einer firma, die summe über einen bestimmten zeitraum angezeigt werden.

was ich aber jetzt natürlich wieder im eifer des gefechts vergessen hab, ist das das ganze natürlich noch firmenabhängig sein müsse. also von wert, in dem der firmenname oben in der kombi gewählt wird.
wie füg ich das noch in den code ein? sowas wie [forms]![...] wirds ja da nicht geben oder?

Martin_8

Also leider hab ichs vergeblich versuchst einzubinden.
Hab es über die übliche verknüpfung zum kombifeld versucht [formular]![... was für VBA ja quatsch sein müsste.
Hab es dann auch mit sowas Me!.... versucht. Hat allerdings auch nicht den gewünschten effekt erzielt...
Wie bring ich denn so eine Abhängigkeit in den Code ein?
Das also nur die Werte für eine Firma mit der im Kombifeld bestimmten ID haben...

DF6GL

Hallo,



etwa so   :
.
.
.
Private Sub Befehl56_Click()
Dim strKrit As String, strKrit1 As String, itm, strSQL As String
strSQL = " SELECT tbl_company.fname, tbl_figures.kbez, tbl_entry_detail.ewert, tbl_figures.kennid, tbl_company.fid, tbl_entry.e_datum" & _
" FROM tbl_figures INNER JOIN (tbl_company INNER JOIN (tbl_entry INNER JOIN tbl_entry_detail ON tbl_entry.eid = tbl_entry_detail.erfassung) ON tbl_company.fid = tbl_entry.firma) ON tbl_figures.kennid = tbl_entry_detail.kennzahl"


For Each itm In Me!liste_kennungen.ItemsSelected
strKrit = strKrit & "," & Me!liste_kennungen.Column(0, itm)
Next


If Len(strKrit) > 1 Then
strKrit = " kennid In (" & Mid(strKrit, 2) & ")"
End If


strKrit1 = " e_datum between " & Format(Nz(Me!txt_datevon, #1/1/1900#), "\#mm\/dd\/yyyy\#") & " and " & Format(Nz(Me!txt_datebis, #12/31/2100#), "\#mm\/dd\/yyyy\#")

If not isnull(Me!Kombi1) Then strKrit1 = strKrit1 & " and  FirmaID=" & Me!Kombi1

If Len(strKrit) > 1 Then
strKrit = strKrit & " and " & strKrit1
Else
strKrit = strKrit1
End If

strSQL = strSQL & " where " & strKrit & " ORDER BY tbl_figures.kennid"

Debug.Print strSQL
Me!uf_timespace.Form.RecordSource = strSQL
End Sub

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Martin_8

genau so dacht ich das mir.

Nur wie solls auch anders sein, jetzt Zeigt er mir im Feld Value "#Name?" anstatt der summe.
Ich seh zwar das er die richtige kennzahl auswählt, und auch die richtige anzahl an werten übernommen werden. Nur eben nicht die werte selber.

Hab versuch ein wenig rumzudoktern.
als erstes hab ich in der SQL anweisung aus "tbl_entry_detail.ewert" "sum(tbl_entry_detail.ewert)" gemacht um wieder die summe zu erhalten.
Prombt kommt die fehlermeldung "tbl_company.fname" ist nicht teil der aggregatfunktion.
Da ich das feld eigentlich nicht brauch hab ichs kurzer hand raus genommen.
Aber jetzt kommt der selbe fehler mit dem feld "tbl_figures.kbez"

Was mach ich schon wieder falsch?

DF6GL

Hallo,

habe den falschen Code als Vorlage genommen...

Es dreht sich ja jetzt nicht um den anfänglichen SQL-String, sondern um das Hinzufügen des Kombiwertes zu einem Kriterium..



Private Sub Befehl56_Click()
Dim strKrit As String, strKrit1 As String, itm, strSQL As String
strSQL = " SELECT  tbl_figures.kbez,  sum(tbl_entry_detail.ewert) as Summevonewert  " & _
" FROM tbl_figures INNER JOIN (tbl_company INNER JOIN (tbl_entry INNER JOIN tbl_entry_detail ON tbl_entry.eid = tbl_entry_detail.erfassung) ON tbl_company.fid = tbl_entry.firma) ON tbl_figures.kennid = tbl_entry_detail.kennzahl"


For Each itm In Me!liste_kennungen.ItemsSelected
strKrit = strKrit & "," & Me!liste_kennungen.Column(0, itm)
Next


If Len(strKrit) > 1 Then
strKrit = " kennid In (" & Mid(strKrit, 2) & ")"
End If


strKrit1 = " e_datum between " & Format(Nz(Me!txt_datevon, #1/1/1900#), "\#mm\/dd\/yyyy\#") & " and " & Format(Nz(Me!txt_datebis, #12/31/2100#), "\#mm\/dd\/yyyy\#")

If not isnull(Me!Kombi1) Then strKrit1 = strKrit1 & " and  FirmaID=" & Me!Kombi1   'Namen anpassen!!
If Len(strKrit) > 1 Then
strKrit = strKrit & " and " & strKrit1
Else
strKrit = strKrit1
End If


strSQL = strSQL & " where " & strKrit & " group BY tbl_figures.kbez"

Debug.Print strSQL
Me!uf_timespace.Form.RecordSource = strSQL
End Sub
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Martin_8

Hallo,

ein dickes dickes Danke schön an dich :) so sieht das ganze sehr gut aus
Gibts diese Danke-Buttons noch? ;)

ein schönheitsfehler hätte ich noch, als ich es versucht hab kam mal wieder ein fehler^^
und zwar die ergebnisse nach dem feld "kennid" aufsteigend zu sortieren. Ich habs mit ORDER BY tbl_figures.kennid im SQL String versucht. das ging aber nicht...

Sorry aber bie VBA muss ich wirklich jeden kleinen mist nachfragen...