collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 62
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13695
  • stats Beiträge insgesamt: 62165
  • stats Themen insgesamt: 8469
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: SQl passt nicht  (Gelesen 179 mal)

Offline HDM

  • Newbie
  • Beiträge: 28
SQl passt nicht
« am: September 28, 2017, 07:20:42 »
Guten morgen,

warum funktiniert der SQl nicht.
Ich will einfach aus einer Tabelle alle Treffer, die in einen der drei Felder "Win 7" stehen haben ausschliessen.

SQL:
SELECT tblbeides.*
FROM tblbeides
WHERE (((tblbeides.[Thema der Schulung AD])<>"Win 7")) OR (((tblbeides.Schulungsthema2AD)<>"Win 7")) OR (((tblbeides.Schulungsthema3AD)<>"Win 7"));



Tabelle: siehe Anhang

Das Ergebnis ist das gleiche wie der Inhalt der Tabelle siehe Anhang. Es ändert sich nichts

Danke
HDH
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 727
Re: SQl passt nicht
« Antwort #1 am: September 28, 2017, 08:05:01 »
Bereinige die Datenstruktur, denn sonst wird die Abfragerei auf die drei Felder immer zur Qual.
SELECT b.*
FROM   tblbeides b
WHERE  b.[thema der schulung ad] & "" = "win 7" +
       b.schulungsthema2ad & "" = "win 7" +
       b.schulungsthema3ad & "" = "win 7" = 0;
Grüße von der (⌒▽⌒)
 

Offline HDM

  • Newbie
  • Beiträge: 28
Re: SQl passt nicht
« Antwort #2 am: September 28, 2017, 08:15:23 »
Hallo,

leider bleibt auch so das Ergeniss das gleiche

Win 7 wird trotzdem gefunden und ebend nicht ausgeschlossen

 

Offline HDM

  • Newbie
  • Beiträge: 28
Re: SQl passt nicht
« Antwort #3 am: September 28, 2017, 08:34:47 »
Habe mal eine kleine Demo angehangen. Wenn ich Win7 im Feld "Thema der Schulung AD" ausschliesse geht es, aber wenn ich es dann im Feld zweites Thema mache, geht es nicht, woran liegt das?

Danke
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1846
Re: SQl passt nicht
« Antwort #4 am: September 28, 2017, 09:38:31 »
Hi,
SELECT tblZeiterfassung.*, tblZeiterfassung.zweitesThema, tblZeiterfassung.drittesThema
FROM tblZeiterfassung
WHERE (((tblZeiterfassung.[Thema der Schulung AD])<>"Win7" Or (tblZeiterfassung.[Thema der Schulung AD]) Is Null) AND ((tblZeiterfassung.zweitesThema)<>"Win7" Or (tblZeiterfassung.zweitesThema) Is Null) AND ((tblZeiterfassung.drittesThema)<>"Win7" Or (tblZeiterfassung.drittesThema) Is Null));

Ist das für Dich zielführend?

Harald
Servus
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 727
Re: SQl passt nicht
« Antwort #5 am: September 28, 2017, 09:45:26 »
Dann muss man die Ausdrücke noch nach Bool casten.SELECT z.*
FROM   TBLZEITERFASSUNG AS z
WHERE  (( ( Cbool([z].[thema der schulung ad] & ""="win7")
          + Cbool([z].[zweitesthema] & ""="win7")
          + Cbool([z].[drittesthema] & ""="win7") ) = 0 ));
Grüße von der (⌒▽⌒)
 

Offline HDM

  • Newbie
  • Beiträge: 28
Re: SQl passt nicht
« Antwort #6 am: September 28, 2017, 10:05:44 »
Danke Euch beiden, es funzt beides, aber wie bekomme ich nun noch den Ausschluss "Manndeckung" mit dazu. Wenn ich den einfach dazuschreibe "Win7" oder "Manndeckung" auch mit den kompletten Feldbezeichnung, passiert es nicht. Win7 bleibt weg Manndeckung drin. 

Danke.

@Nouba   ja ich baue alles um. Aber bis zum Jahresende brauche ich noch die alten Daten. Dann kann ich es umbauen, leider :=(

 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1846
Re: SQl passt nicht
« Antwort #7 am: September 28, 2017, 10:14:45 »
SELECT tblZeiterfassung.*, tblZeiterfassung.zweitesThema, tblZeiterfassung.drittesThema
FROM tblZeiterfassung
WHERE ((((tblZeiterfassung.zweitesThema)<>"Win7" And Not (tblZeiterfassung.zweitesThema)="Manndeckung") Or (tblZeiterfassung.zweitesThema) Is Null) AND (((tblZeiterfassung.drittesThema)<>"Win7" And Not (tblZeiterfassung.drittesThema)="Manndeckung") Or (tblZeiterfassung.drittesThema) Is Null) AND (((tblZeiterfassung.[Thema der Schulung AD])<>"Win7" And Not (tblZeiterfassung.[Thema der Schulung AD])="Manndeckung") Or (tblZeiterfassung.[Thema der Schulung AD]) Is Null));
Servus
 

Offline HDM

  • Newbie
  • Beiträge: 28
Re: SQl passt nicht
« Antwort #8 am: September 28, 2017, 10:25:38 »
Hallo Harald,

danke das war es. Nun kann ich hoffentlich die Restzahlen für dieses Jahr ermitteln.

Aber nun noch eine Frage. Kann man die Meldung siehe Anhang bei einer Tabellenerstellungsabfrage unterbinden oder per vba mit JA beantworten?

HDM
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1846
Re: SQl passt nicht
« Antwort #9 am: September 28, 2017, 10:50:36 »
Hi,

Im VBA-Teil eintragen
DoCmd.SetWarnings False
Habe ich aber nicht getestet, ob das auch bei der Erstellungsabfrage anwendbar ist.

Harald
Servus
 

Offline HDM

  • Newbie
  • Beiträge: 28
Re: SQl passt nicht
« Antwort #10 am: September 28, 2017, 10:56:51 »
werde ich ausprobieren und Rückmeldung geben

 

Offline HDM

  • Newbie
  • Beiträge: 28
Re: SQl passt nicht
« Antwort #11 am: September 28, 2017, 14:22:12 »
Hallo Franz,

das mit den setWarnings geht auf jeden Fall schonmal. Aber nun komme ich zu einem erneuten Problem mit dem SQl

Wenn ich den per Docdm.RunSql ausführen will, geht das nicht, weil der String zu lang ist. Wenn ich den nun trenne mit " & _ läuft der auch immer auf den Hammer:

Hier nochmal mein String
SELECT tblbeides.*
FROM tblbeides
WHERE (((tblbeides.zweitesThema)<>"Win7" And (tblbeides.zweitesThema)<>"Manndeckung") AND ((tblbeides.drittesThema)<>"Win7" And (tblbeides.drittesThema)<>"Manndeckung") AND ((tblbeides.[Thema der Schulung AD])<>"Win7" And (tblbeides.[Thema der Schulung AD])<>"Manndeckung")) OR (((tblbeides.zweitesThema) Is Null) AND ((tblbeides.drittesThema)<>"Win7" And (tblbeides.drittesThema)<>"Manndeckung") AND ((tblbeides.[Thema der Schulung AD])<>"Win7" And (tblbeides.[Thema der Schulung AD])<>"Manndeckung")) OR (((tblbeides.zweitesThema)<>"Win7" And (tblbeides.zweitesThema)<>"Manndeckung") AND ((tblbeides.drittesThema) Is Null) AND ((tblbeides.[Thema der Schulung AD])<>"Win7" And (tblbeides.[Thema der Schulung AD])<>"Manndeckung")) OR (((tblbeides.zweitesThema) Is Null) AND ((tblbeides.drittesThema) Is Null) AND ((tblbeides.[Thema der Schulung AD])<>"Win7" And (tblbeides.[Thema der Schulung AD])<>"Manndeckung")) OR (((tblbeides.zweitesThema)<>"Win7" And (tblbeides.zweitesThema)<>"Manndeckung") AND ((tblbeides.drittesThema)<>"Win7" And (tblbeides.drittesThema)<>"Manndeckung") AND ((tblbeides.[Thema der Schulung AD]) Is Null)) OR (((tblbeides.zweitesThema) Is Null) AND ((tblbeides.drittesThema)<>"Win7" And (tblbeides.drittesThema)<>"Manndeckung") AND ((tblbeides.[Thema der Schulung AD]) Is Null)) OR (((tblbeides.zweitesThema)<>"Win7" And (tblbeides.zweitesThema)<>"Manndeckung") AND ((tblbeides.drittesThema) Is Null) AND ((tblbeides.[Thema der Schulung AD]) Is Null)) OR (((tblbeides.zweitesThema) Is Null) AND ((tblbeides.drittesThema) Is Null) AND ((tblbeides.[Thema der Schulung AD]) Is Null));

Wenn ich den nun wie folgt zu trennen versuchen
DoCmd.RunSQL "Select tblbeides.* " & _
"FROM tblbeides WHERE (((tblbeides.zweitesThema) <> "Win7" And (tblbeides.zweitesThema) <> "Manndeckung") And ((tblbeides.drittesThema) <> "Win7" And (tblbeides.drittesThema) <> "Manndeckung") And ((tblbeides.[Thema der Schulung AD]) <> "Win7" And (tblbeides.[Thema der Schulung AD]) <> "Manndeckung")) Or (((tblbeides.zweitesThema) Is Null) And ((tblbeides.drittesThema) <> "Win7" And (tblbeides.drittesThema) <> "Manndeckung") And ((tblbeides.[Thema der Schulung AD]) <> "Win7" And (tblbeides.[Thema der Schulung AD]) <> "Manndeckung")) Or (((tblbeides.zweitesThema) <> "Win7" And (tblbeides.zweitesThema) <> "Manndeckung") And ((tblbeides.drittesThema) Is Null) And ((tblbeides.[Thema der Schulung AD]) <> "Win7" And (tblbeides.[Thema der Schulung AD]) <> "Manndeckung")) " & _
"OR (((tblbeides.zweitesThema) Is Null) AND ((tblbeides.drittesThema) Is Null) AND ((tblbeides.[Thema der Schulung AD])<>"Win7" And (tblbeides.[Thema der Schulung AD])<>"Manndeckung")) OR (((tblbeides.zweitesThema)<>"Win7" And (tblbeides.zweitesThema)<>"Manndeckung") AND ((tblbeides.drittesThema)<>"Win7" And (tblbeides.drittesThema)<>"Manndeckung") AND ((tblbeides.[Thema der Schulung AD]) Is Null)) OR (((tblbeides.zweitesThema) Is Null) AND ((tblbeides.drittesThema)<>"Win7" And (tblbeides.drittesThema)<>"Manndeckung") AND ((tblbeides.[Thema der Schulung AD]) Is Null)) OR (((tblbeides.zweitesThema)<>"Win7" And (tblbeides.zweitesThema)<>"Manndeckung") AND ((tblbeides.drittesThema) Is Null) AND ((tblbeides.[Thema der Schulung AD]) Is Null)) OR (((tblbeides.zweitesThema) Is Null) AND ((tblbeides.drittesThema) Is Null) AND ((tblbeides.[Thema der Schulung AD]) Is Null));"
gehts nicht, weil er beim ersten Win7 stehen bleibt

Im SQL Direktfenster führe ich den Code aus und der funzt einwandfrei. Irgendwie trenne ich hier falsch, aber wo / wie

Danke

HDM
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22988
Re: SQl passt nicht
« Antwort #12 am: September 28, 2017, 14:50:02 »
Hallo,

das war Harald , nicht ich    ;)

Wieso willst Du eine Auswahl-Abfrage  mit Docmd.RunSql ausführen?

RunSQL ist für Aktions-Abfragen zu verwenden..  Für Auswahl-Abfragen steht OpenQuery zur Verfügung.

Wenn der String zu lang ist, dann kürze ihn, indem (in diesem Fall hier) die Qualifizierer (Tabellennamen vor den Feldnamen) weggelassen werden.

Offline HDM

  • Newbie
  • Beiträge: 28
Re: SQl passt nicht
« Antwort #13 am: September 28, 2017, 15:35:49 »
Hallo Franz :=) Harrald :=) und Nuoba,

ich mache das dann mal jetzt mit dem openQuery und schauen dass ich fertig werde. Melde mich wieder

Danke aber schonmal auf jeden Fall an alle

HDM
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 22988
Re: SQl passt nicht
« Antwort #14 am: September 28, 2017, 15:55:32 »
Hallo,


und  noch 'ne Frage:

Was willst dann mit der geöffneten Abfrage anfangen?