Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

dcount

Begonnen von HDM, September 26, 2017, 15:51:06

⏪ vorheriges - nächstes ⏩

HDM

Hallo,

warum erhalte ich hier einen Fehlermeldung

Dim wert As String
wert = "test"
Dim intx As Integer


intx = DCount("*", "meineTabelle", "Feld1= '" & wert & "' and Feld2= '" & wert"'")

DF6GL

Hallo,

weil beim letzten wert der "&"-Operator fehlt....

HDM

Supi Danke

wenn man den Wald vor......



HDM

Hey, nun stellt sich aber doch noch eine Frage

Kann man die Datenherkunft beim DCount auch das SQL Statement als Variable eingeben und wenn ja wie

Danke
HDH


Dim sql as string
sql = "mein SQL string"       
intx = DCount("*", "sql", "Feld1= '" & wert & "' and Feld2= '" & wert & "'")


Übrigens wenn ich den sql String als SQL in einer Abfrage im Entwurf eintrage und dann ausführe funktioniert er einwandfrei.



DF6GL

Hallo,

bei Dcount() geht das nicht.

Als Alternative:


Dim strSQL as String,  intX as Long, strWert as String, DB as Database

Set DB = Currentdb
strWert = "abcd"
strSQL = "Select Count(*) from tblTabelle Where Feld1= '" & strWert & "' and Feld2= '" & strWert & "'"     

intX= DB.OpenRecordset(strSQL, dbOpenSnapShot)(0)

MsgBox intX
Set DB = Nothing


HDM

Hey, er zählt zwar so aber wenn ich meinen SQL String davor sezte geht nichts. Dann zählt er falsch  was mache ich beim Zusammenbauen falsch, bzw. was übersehe ich hier


Hier mal meinen Code zum Zusammenbauen


     'Dim DB As DAO.Database
     'Dim rst As DAO.Recordset
     Dim a As Integer
    ' Set DB = CurrentDb
     Dim wert As String
     Dim Bezeichner As String
     Dim Anz As String
     Dim intX As Integer
     Dim sql As String
     
     Dim t As String, v As String
Dim Wert1 As String

Wert1 = "Nicht Win 7 oder Manndeckung"

If Me.KOonline = -1 Then
    t = t & v & "OnlineSchulung= -1"
    v = " OR "
    Else
    t = t & v & "OnlineSchulung= 0"
    v = " OR "
End If

If Me.KOGutberaten = -1 Then
    t = t & v & "GutBeraten= -1"
    v = " OR "
    Else
    t = t & v & "GutBeraten= 0"
    v = " OR "
End If

If Me.KOAusschluss = -1 Then
    t = t & v & " ((Not (tblZeiterfassung.[Thema der Schulung AD])=""Win 7"" OR (tblZeiterfassung.[Thema der Schulung AD])=""Manndeckung""))"
    v = " OR "
End If

sql = "SELECT tblZeiterfassung.* FROM tblZeiterfassung Where " & t & ";"""
'Me.Text24 = sql





Dim strSQL As String, intXX As Long, strWert As String, DB As Database

Set DB = CurrentDb
strWert = "test"
strSQL = "Select Count(*) from tblZeiterfassung Where " & t & " And [Thema der Schulung AD]= '" & strWert & "' Or Schulungsthema2AD= '" & strWert & "' Or Schulungsthema3AD= '" & strWert & "';"
Me.Text24 = strSQL
intXX = DB.OpenRecordset(strSQL, dbOpenSnapshot)(0)

MsgBox intXX
Set DB = Nothing


Ein Beispiel SQL sieht dann wie folgt aus

Select Count(*) from tblZeiterfassung Where OnlineSchulung= -1 OR GutBeraten= 0 OR  ((Not (tblZeiterfassung.[Thema der Schulung AD])="Win 7" OR (tblZeiterfassung.[Thema der Schulung AD])="Manndeckung")) And [Thema der Schulung AD]= 'test' Or Schulungsthema2AD= 'test' Or Schulungsthema3AD= 'test';

Er findet dann aber immer alle DS

Danke
HDH

DF6GL

Hallo,

setz mal "Win 7" und "Manndeckung" zwischen Hochkomma und nicht zwischen Gänsefüße..

Zudem sind zusammenhängende OR-Bedingungen zu klammern.  Inwieweit die Where-Condition nun logisch die Erwartungen erfüllen kann, musst Du selber ergründen.

Kopiere den SQL-String und setze ihn bei einen neuen Abfrageentwurf in das SQL-Ansicht-Fenster.  Prüfe dann, ob die Kriterien passend sind.

HDM

Hallo Franz,

sol läuft es durch, aber ob es nun das Ergebnis ist (SQL) muss ich noch schauen. Mache mir heute erstmal noch einen kleineren Testbestand als den Echten, da sind zu viele Daten drin.

Gebe noch eine Rückmeldung spätestens morgen

Danke
HDH

HDM

Hallo Franz

noch eine Frage dazu

Ist es richtig, daß die Reihenfolge innerhalb der Where Bedingung auch ein Rolle spielt wegen "und'  "oder" ? Kann man daß irgendwo nachlesen?

HDM

Habe noch was gefunden, Solln ich die "AND" und "OR" Dcdizuri mit Klammern Gruppieren? Das meint st Du doch mit QR-Bedingungen klemmen oder?

Lachtaube

Der AND-Vergleichsoperator hat Vorrang vor dem OR-Vergleichsoperator. Analog zur Algebra, wo Punkt- vor Strichrechnung beim Auswerten gilt, kann man durch Klamersetzung die Rangordnung von Ausdrücken beeinflussen. X / Y + Z ergibt halt etwas anderes als X / (Y + Z) - analog dazu, wäre in einem SQL-Kriterium X AND Y OR Z etwas anderes wie X AND (Y OR Z), wobei X, Y und Z im SQL-Beispiel jeweils als Wahrheitsausdrücke zu verstehen sind. Welche der beiden Formen richtig ist, muss der Anwender selbst wissen oder harausfinden.
Grüße von der (⌒▽⌒)

HDM

Danke Nouba

Werde ich probieren und wenn ich nicht weiter komme, mal ne DemoDB zum Downloaden bereitstellen. Die habe ich mir Ebene schonmal gebastelt auch mit nur 10 DS

HDH

Hondo

Wie jetzt, Norbert? Echt?
Gut zu wissen. Bin echt nicht mehr so oft im Forum wie früher unterwegs.

Gruß Andreas

HDM

Hatte mich vertan aber auch direkt gelöscht wieso siehst Du das