OleDB Access Abfrage

soyo

Erfahrenes Mitglied
Hallo ... ich mal wieder ...

Ich habe eine Tabelle gegeben mit mehreren tausennd Datensätzen. In dieser Tabelle gibt es ein Attribut GNR des Typs String. Ich habe Werte in Bereich von 0-50000. Teilweise enden die Werte auch mit einem Zeichen.
Ich will jetzt nur die Datensätze auslesen, welche mit 33,34 und 35 beginnen und bei dem das Attribut BerichtPflicht auf -1 gesetzt sind.

EInfach mal ein Beispiel:

33489
33598c
34512a
35984b
35998


Leider bekomme ich das mit dem LIKE-Syntax nicht hin. Hier mein Query
Code:
SELECT COUNT(*) AS anzahl
from EBM2000Regelwerk
WHERE BerichtPflicht = -1
  AND
WHERE GNR IN ('33?','34?','35?');

Wo liegt der Fehler?


Gruß soyo
 

Nico Graichen

Erfahrenes Mitglied
Hi

Probiers doch mal so:
SQL:
SELECT COUNT(*) AS anzahl
from EBM2000Regelwerk
WHERE BerichtPflicht = -1
  AND
(gnr LIKE '33%' OR gnr LIKE '34%' OR gnr LIKE '35%'));
 

soyo

Erfahrenes Mitglied
Funktioniert! Vielen Dank.

Das 2. WHERE bei mir war ein Schreibfehler, aber an die Klammern habe ich natürlich nicht gedacht. Außerdem hab ich gelesen das das SQL-typische % bei OleDB Abfragen zu einem ? wird. Nun gut, anscheinend nicht :)

Gruß soyo
 

soyo

Erfahrenes Mitglied
Code:
string strQuery2 = "UPDATE EBM2000Regelwerk SET BerechtPflicht=0 WHERE BerichtPflicht=-1 AND (gnr LIKE '33%' OR gnr LIKE '34%' OR gnr LIKE '35%')";
OleDbCommand cmd2 = new OleDbCommand(strQuery2, con);
cmd2.ExecuteNonQuery();

bei cmd2.ExecuteNonQuery(); bekomm ich den Fehler Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben. ExecuteNonQuery() ist aber eine Parameterlose Methode oder sehe ich das falsch?

gruß soyo
 
Zuletzt bearbeitet:

soyo

Erfahrenes Mitglied
Problem hat sich erledigt. Habe einfach alles noch einmal neu geschrieben und nun funktioniert es.
 

Neue Beiträge