-
Hallo @all,
ich hab ein Problem aber noch keine passende Lösung. Anbei erst einmal mein eigene Lösung als Quellcode:
'Private Sub Monat_AfterUpdate()
'Dim intZahl As Integer
'Dim strText As String
'Set strText = Me.Monat
'Set intZahl = CInt(strText)
'If CInt(strText) = "April" > 20 Then
'MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe"
'Me.Monat.SetFocus
'Else
'Me.GP_Nr_Kombinationsfeld.SetFocus
'End If
'End Sub
Ich möchte eine Art Plausi-Check in mein Formular einbauen, welches mir 20 Datensätze in der Spalte Monat pro Monat meiner Tabelle zulässt und alles was darüber hinaus geht, soll durch einen Hinweis einer MsgBox hingewiesen werden.
Aber ich scheitere immer daran, wie ich die Anzahl der Einträge z.b. "April" in der DB zählen kann, da es sich ja um Zeichenketten handelt.
Hat jemand eine Idee, was ich falsch mach oder anders machen könnte?
Vielen Dank
Gruß, Rico
-
22.06.10 15:18 #2
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Ich schon wieder
.
Das hier kann nicht gehen:
Code vb:1
'If CInt(strText) = "April" > 20 Then
das wäre ein doppelter Vergleich.
In welcher Variablen wird den der Wert geführt auf den du prüfen willst?
Die Abfrage der DB könnte in etwa so aussehen:
Code sql:1
SELECT COUNT(datum) AS anzahl FROM tabelle WHERE datum = 'April'
ohne die DB zu kennen aber schwer zu sagen.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Hey Du,

also in SQL sieht die Abfrage bei mir so aus:
SELECT Count(Monat) AS [Anzahl-April]
FROM tblFlopkunden_2010_TDN
WHERE Monat = 'April';
Monat heiß somit die Variable und ist vom Typ Text.
Kannst du damit was anfangen?
Gruß
Rico
-
22.06.10 15:37 #4
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Also "Anzahl-April" würde ich nicht nehmen, kann sein das der Bindestrich da mal Probleme macht, nenne es einfach nur "Anzahl" oder nimm anstatt des "-" den "_".
Wenn deine Abfrage einen Wert zurückgibt, ist dieser dann im Feld "Anzahl" oder im Moment "Anzahl-April" enthalten und ist eine Zahl !! Mit diesem Rückgabewert machst du dann die IF-Anweisung.
Da steckt Access dahinter oder Dann kopiere deine SQL-Anweisung mal dort in eine Abfrage und führe sie aus. Dann siehst du was zurückgegeben wird.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ok, bei mir sieht das ganze jetzt so aus, aber funktioniert nicht, weil ich bestimmt mal wieder voll auf dem Holzweg bin.... *grrrr*
Hab jetzt einfach mein Select im Code kopiert aber so einfach wird es wohl nicht klappen?
Private Sub Monat_AfterUpdate()
If SELECT Count(Monat) AS [Anzahl-April] From tblFlopkunden_2010_TDN WHERE Monat = 'April'; > 20 Then
MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe"
Me.Monat.SetFocus
Else
Me.GP_Nr_Kombinationsfeld.SetFocus
End If
End Sub
-
Sorry so ist der Quelltext:
Private Sub Monat_AfterUpdate()
If SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April'; > 20 Then
MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe"
Me.Monat.SetFocus
Else
Me.GP_Nr_Kombinationsfeld.SetFocus
End If
End Sub
-
Bitte den Code formatiert in [VB]mein Code[/VB] setzen.
So wie er jetzt da steht kann man das Ding kaum lesen---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Code vb:
1 2 3 4 5 6 7 8 9 10
Private Sub Monat_AfterUpdate() If SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April' > 20 Then MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe" Me.Monat.SetFocus Else Me.GP_Nr_Kombinationsfeld.SetFocus End If End Sub
-
22.06.10 16:03 #9
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Du kannst eine SQL-Anweisung nicht so verwenden. Du musst ja irgendwo den Zugriff auf die Datenbank erstellt haben und damit musst du arbeiten.
Code vb:1 2 3 4 5 6 7 8 9 10
Dim db As datebase Dim rs As Recordset Set db = Opendatabase("C:\Pfad\daba.mdb") sql$ = "SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April'" Set rs = db.OpenRecordset(sql$) If rs.RecordCount > 20 then 'hier der Code End If
Bin zu lange raus aus VB und kann den Datenbankzugriff nicht mehr aus dem Kopf, aber irgendwie so ähnlich sieht es aus.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
RecordCount gibt dir die Anzahl Datensätze zurück. Das ist in dem Fall aber immer 1, weil ein COUNT() über alles stattfindet. Entweder also ohne COUNT() oder
Code vb:1 2 3 4
sql$ = "SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April'" Set rs = db.OpenRecordset(sql$) call rs.MoveFirst if rs!Anzahl > 20 then
Wird hier eigentlich mit VB6 in Kombination mit Access oder mit VBA in Access gearbeitet?
Je nachsdem ist die Connection schwerer oder einfacher---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Danke schön.
dafür dass du schon lang raus bist, ist es aber sehr plausibel. vba mangelt eine nicht erzeugte und/oder gesetzte Variable an, nämlich die Variable
SQL$. Wie muss ich diese Dim und Set ´en? Das ist das was mir immer schwer fällt bei VB bzw. Allgemein
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Private Sub Monat_AfterUpdate() Dim db As Database Dim rs As Recordset Set db = OpenDatabase("d:\Documents and Settings\rschaedl\My Documents\Flopkunden Datenbank\Flopkunden V1.2.mdb") SQL$ = "SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April'" Set rs = db.OpenRecordset(SQL$) If rs.RecordCount > 20 Then MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe" Me.Monat.SetFocus Else Me.GP_Nr_Kombinationsfeld.SetFocus End If End Sub
-
22.06.10 16:18 #12
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
@yaslaw: Du hast natürlich mal wieder Recht. Vorhin habe ich selber noch gefragt wie der Wert zum Vergleich ermittelt wird und jetzt mache ich es selber falsch.
@Rico82: Am Anfang: Dim sql$ bzw. Dim sql As String sollte helfen. Und schau nach wie es yaslaw oben den Teile mit "rs!Anzahl" geschrieben hat. Sonst geht es wieder nicht.Geändert von tombe (22.06.10 um 16:21 Uhr)
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ich arbeite mit VBA (6.5) in Access.
-
....es scheint zu funktionieren mit diesem Code:
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Private Sub Monat_AfterUpdate() Dim db As Database Dim rs As Recordset Dim sql As String Set db = OpenDatabase("d:\Documents and Settings\rschaedl\My Documents\Flopkunden Datenbank\Flopkunden V1.2.mdb") sql = "SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April'" Set rs = db.OpenRecordset(sql) Call rs.MoveFirst If rs!Anzahl > 20 Then MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe" Me.Monat.SetFocus Else Me.GP_Nr_Kombinationsfeld.SetFocus End If End Sub
VB möchte nun aber auf die Datnebank zugreifen die ich mit einem Kennwort versehen habe, daher kommt auch der Laufzeitfehler. Gibt es die Möglichkeit die Abfrage ohne Kennwort auszuführen und ohne das Kennwort löschen zu müssen?
Nun wirds aber kompliziert.....
gruß und Danke
Rico
-
Wenn du mit VBA in Access arbeitest, kannst du den DB-Zugriff sparen und das Recordset direkt aus currentDb öffnen ausser du graiffst auf eine andere DB zu als die in der du bist.
Code vb:1 2 3 4 5
Dim rs as DAO.Recordset DIM sql as String sql = "SELECT ......" Set rs = currentDb.OpenRecordset(sql)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Passwortabfrage wo einbauen und wie
Von Stari im Forum PHPAntworten: 3Letzter Beitrag: 21.04.07, 17:17 -
w3d in Director einbauen!
Von S_Golem im Forum Cinema 4DAntworten: 1Letzter Beitrag: 18.04.07, 21:53 -
Javascript in php einbauen!
Von Steve92 im Forum PHPAntworten: 2Letzter Beitrag: 14.09.06, 16:35 -
Tastenfeld in PC einbauen
Von fubargen im Forum SmalltalkAntworten: 3Letzter Beitrag: 12.02.05, 11:51 -
2. Festplatte einbauen
Von pe-kar im Forum HardwareAntworten: 12Letzter Beitrag: 08.04.04, 19:44



7Danke

Zitieren


Login





