WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   ein allerletztes mal ;) : Access Textboxinhalt in where Klausel (http://www.wcm.at/forum/showthread.php?t=139241)

Chrisi99 13.07.2004 10:35

ein allerletztes mal ;) : Access Textboxinhalt in where Klausel
 
wie bau ich exemplarisch den Inhalt einer Textbox in eine "Where Klausel" ein, damit ich damit dann einen Bericht erstellen kann, der die gefilterten Datensätze enthält...

mfg

Chrisi99 13.07.2004 11:08

hab schon eine möglichkeit

Code:

Dim strSQL As String
    strSQL = "Select /AUSWAHL/ from /TABELLE/ Where /KRITERIUM/ Like '*"
    strSQL = strSQL & Me!liste & "*'"
    Me!liste.RowSource = strSQL
    Me!liste.Requery


wbendl 13.07.2004 11:53

Hi!

Grundsätzlich kann man den Inhalt einer Textbox einer in einem SQL-Statement verwenden. Aus Sicherheitsgründen würde ich es aber nicht machen. Eine (un)absichtliche unvorhergesehen Eingabe in die Textbox kann unangenehme Folgen haben. Da ist von Absturz bis Aushebeln von Sicherheitmechanismen alles möglich.

Dein Code verwendet aber anscheinend ein Listenfeld. Wenn nur vorgegebene Möglichkeiten zur Auswahl stehen ist das OK.

Was ich nicht verstehe:
Filter sich das Listenfeld durch die eigene Auswahl?
Das würde wohl keinen Sinn machen.

Vorschlagen würde ich folgendes:
Ein Dropdown, das die Ausdrücke für den Filter zur Auswahl anbietet.
Ein zusätzlicher Eintrag "Alle", um die Daten ungefiltert anzuzeigen.

Das Recordset ohne Filter (also mit allen DS) erstellen, und anschließend durch Auswahl im Dropdown filtern.

Wenn du die Auswahl in die WHERE-Klausel einbaust, muß das Recordset jedesmal neu erstellt werden. Das hat nur Sinn, wenn man mit ständigen Änderungen der Daten rechnen muß.

mfg

WB

Chrisi99 13.07.2004 14:18

Zitat:

Original geschrieben von wbendl
Hi!

Grundsätzlich kann man den Inhalt einer Textbox einer in einem SQL-Statement verwenden. Aus Sicherheitsgründen würde ich es aber nicht machen. Eine (un)absichtliche unvorhergesehen Eingabe in die Textbox kann unangenehme Folgen haben. Da ist von Absturz bis Aushebeln von Sicherheitmechanismen alles möglich.

Dein Code verwendet aber anscheinend ein Listenfeld. Wenn nur vorgegebene Möglichkeiten zur Auswahl stehen ist das OK.

Was ich nicht verstehe:
Filter sich das Listenfeld durch die eigene Auswahl?
Das würde wohl keinen Sinn machen.

Vorschlagen würde ich folgendes:
Ein Dropdown, das die Ausdrücke für den Filter zur Auswahl anbietet.
Ein zusätzlicher Eintrag "Alle", um die Daten ungefiltert anzuzeigen.

Das Recordset ohne Filter (also mit allen DS) erstellen, und anschließend durch Auswahl im Dropdown filtern.

Wenn du die Auswahl in die WHERE-Klausel einbaust, muß das Recordset jedesmal neu erstellt werden. Das hat nur Sinn, wenn man mit ständigen Änderungen der Daten rechnen muß.

mfg

WB

die idee mit den filtern gefällt mir sehr gut.
hast du da näheres (link) dazu, mit so etwas hab ich nämlich noch nie geabeitet...

lg
Christoph

Chrisi99 13.07.2004 14:34

und wenn ma grad dabei sind ;)

wie kann ich in access feststellen wie oft (in wie vielen Zeilen) der Buchstabe A vorkommt ??


A
A
B
C
D
A
A
A
A
-
6

so auf die Art :)

mfg

wbendl 13.07.2004 14:47

Hi!

Filter funktioniert wie WHERE, nur ohne dem Schlüsselwort.

Recordset.Filter = "Feld = Suchbegriff"

Recordset.Filter = "" hebt den Filter wieder auf.

Die Anzahl von Zeilen kann man z. B. mit Recordset.RecordCount oder mit der SQL-Funktion Count feststellen.

mfg

WB

powerman 13.07.2004 18:18

hi,
und dazu gibt es vom data becker "programmierung in access" ein d i c k e s b u c h (1178 seiten) isb n 3-8158....für ca. 60,-€

Chrisi99 14.07.2004 08:43

kann ich Count (=Anzahl) auch so einschränken, dass nicht alle Zeilen gezählt werden, sondern nur zb die mit "PID"
in meinem Bericht sind nämlich einschübe vorhanden, die Leerzeilen verursachen, die ich natürlich nicht zählen will.


mfg

wbendl 14.07.2004 11:48

Hi!

Übersichtlicher wirds, wenn du zum Zählen eine eigene Abfrage erstellst.

mfg

WB

Chrisi99 14.07.2004 12:38

Zitat:

Original geschrieben von powerman
hi,
und dazu gibt es vom data becker "programmierung in access" ein d i c k e s b u c h (1178 seiten) isb n 3-8158....für ca. 60,-€

könntest mir die betreffenden Seiten faxen??
:D
danke für den tipp werd zum Kienreich schauen, vlt hat ers da.

Chrisi99 15.07.2004 07:57

kann ich in dem Code:

Code:

SELECT count(dP1.P1PENR) AS [Anzahl der Arbeiter]
FROM ((dFirma INNER JOIN dSparte ON dFirma.FnNR=dSparte.FnNR)
 INNER JOIN (dMarke INNER JOIN (dAbeilung INNER JOIN dP1 ON dAbeilung.AbNR=dP1.P1ABTE) ON dMarke.MkNR=dAbeilung.MkNR) ON dSparte.SpNR=dMarke.SpNR) INNER JOIN dW1 ON dP1.P1PENR=dW1.VPNR
WHERE (((dAbeilung.AbNAME) LIKE [Forms].[Hauptmenu].[txt_abteilungen]));

die [txt_abteilungen] (Textfeld) zu [kmb_abteilungen] umbauen?

irgendwie nimmt er scheinbar die Werte aus der Combobox nicht, denn es kommt immer so ein nettes Pop-Up wo ich den Abteilungsnamen eingeben soll :(


:)
mfg

wbendl 15.07.2004 08:51

Hi!

Jetz ist die Grenze meiner Kenntnisse über Access erreicht. Ich verwende Access als Benutzer-Oberfläche seit Jahren nicht mehr.

Versuch mal die Text-Eigenschaft explizit anzugeben.
Wenn das nicht hilft, bleibt auf jeden Fall noch die Möglichkeit, auf VBA umzusteigen. (Was ich sowieso für besser halte)

mfg

WB

Chrisi99 15.07.2004 09:36

Zitat:

Original geschrieben von wbendl
Hi!

Jetz ist die Grenze meiner Kenntnisse über Access erreicht...
mfg

WB

das ist, wie soll ich sagen, ... schlecht für mich :D
danke für die viele Hilfe bisher, ich werde mir wohl das VBA Buch von weiter oben besorgen müssen :)


THX ALOT


mfg

wbendl 15.07.2004 10:01

Bei Lösungen mit VB und VBA kann ich dir schon noch helfen. Nur mit den Accessspezifischen Dingen bin ich nicht so bewandert.

Wenn du dich weiterbilden willst, solltest du für DB-Anwendungen auf VB setzen, und auf Access als Oberfläche verzichten.

Als 1.Schritt kannst du eine auf VBA basierende Oberfläche mit Access erstellen, und dabei auf möglicht viele Hilfsmittel verzichten.
Auch auf die gebundenen Steuerelemente solltest du verzichten.
Damit ist ziemlich alles möglich. Nur der Umstieg auf eine neue Access-Version bringt meistens Probleme. Darum habe ich Access total aufgegeben, und verwende VB6 für die Oberfläche.

Das ist am Anfang mehr Arbeit, weil du viel lernen mußt. Aber es zahlt sich aus. Du wirst staunen, was man alles machen kann.

Es gibt einige gute E-Books zum Thema. Und im Forum gibt's auch immer Hilfe.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag