Hallo zusammen, ich habe ein Problem wie oben Beschrieben,
in einer Abfrage habe folgenden Filter eingetragen " Wie "*" & [Formulare]![frmProjekteVerwaltung]![txtJahr]"
wenn ich jetzt versuche die Abfrage auszuführen erhalte ich immer eine Fehlermeldung, wie müsste ich den Filter konform für SQL server lauten.
Danke für die Unterstüzung
			
			
			
				Hallo,
die Fehlermeldung ist geheim? 
			
			
			
				Fehlermeldung:
Dieser Ausdruck wurde Falsch eingegeben , oder er ist zu Komplex, um ausgewertet zu Werden
			
			
			
				Hallo,
wo befindet sich das Feld "txtJahr" Hafo oder Ufo ?
Ist das Formular geöffnet ?
Ist txtJahr eine Zahl (4-stellig) ?
Warum verwendest Du Wie ...
Willst Du nach Teilen des Feldes filtern, oder immer die ganze Zahl ?
Bei SQL-Server könnte der Platzhalter auch das % Zeichen sein, statt *
Aber da habe ich keine Erfahrung.
			
			
			
				txtJahr befindet sich im Hafo ja das Formular ist geöffnet und es werden nur die Daten angezeigt von 2025. wie wird verwendet um nur die Datensätze von StartDatum 2025 anzuzeigen nach den teilen des Feldes.
in Access ohne Anbindung an SQL Server funktioniert alles bestens, der Fehler tritt erst dann in Erscheinung wenn ich meine Daten mit SQL Verknüpfe. Bei Microsoft SQL Server Migration werden mir die Entsprechende Abfragen auch gegenzeichnet mit roten x.
			
			
			
				Hallo,
ZitatStartDatum 2025 anzuzeigen nach den teilen des Feldes.
Willst du wirklich nach 2*, oder 20* oder 202* filtern ?
Ich habe oben in #3 noch was nachgetragen.
			
				sorry mein Fehler nach dem ganzen wert also 2025 oder 2024
			
			
			
				Hallo,
dann ist der Platzhalter ersatzlos überflüssig.
= [Formulare]![frmProjekteVerwaltung]![txtJahr]
			
			
			
				Leider geht leider nicht bekomme die selbe Fehlermeldung wie oben,
währe ja auch zu schön gewesen.
			
			
			
				llo,
dann musst Du warten, bis hier mal ein SQL-Server Experte auftaucht.
			
			
			
				Hallo,
na ja, welchen Datentype hat denn nun StartDatum? Das entscheidet, ob Hochkommas verwendet werden müssen oder nicht. 
In einen Formular-Filterausdruck gehört auch immer der Feldname:
[Startdatum] = [txtJahr]
Wobei ich nicht über einen Formularausdruck gehen würde, sondern per VBA nach einer Änderung den Filterausdruck als String neu zusammen setzten und der Filtereigenschaft zuweisen würde. 
Gruß 
Knobbi38
			
			
			
				Der typ ist txtDatum wird übergeben an die Abfrage
			
			
			
				Das ist kein Datentyp sondern die Bezeichnung für ein Steuerelement. Gemeint war der Datentyp des Feldes in der Abfrage.
			
			
			
				text kurz
			
			
			
				Also dann, wie immer: Text in SQL muß in Hochkommas eingeschlossen werden.
			
			
			
			
			
				Was soll ich in hochkommer stellen den text
			
			
			
				Zitat von: Lemmy2902 am Februar 05, 2025, 13:58:59Was soll ich in hochkommer stellen den text
[Formulare]![frmProjekteVerwaltung]![txtJahr] Steh da jetzt auf den Schlauch ..
Private Sub Form_Load()
 With Me.cmbJahr
    .AddItem "2024"
    .AddItem "2023"
    .AddItem "2025"
 End With
 
End Sub
Private Sub cmbJahr_Change()
    Select Case cmbJahr.Value
Case Is = "2024": txtJahr.Value = "2024"
Case Is = "2023": txtJahr.Value = "2023"
Case Is = "2025": txtJahr.Value = "2025"
Case Else: txtJahr.Value = "Kein Kein Jahr Gewält"
End Select
ref
End Sub so befülle ich und übergebe die werte dann an das textfeld Jahr dises übergebe ich dann der Filterfunktion 
			
 
			
			
				Hallo,
zu Deinem VBA: Wenn Du doch schon eine Kombobox mit der Zahl hast, wozu befüllst Du dann noch ein Textfeld damit?
Und statt dieses umständlichen Select-Case-Konstruktes könntest Du auch einfach schreiben:
Me.txtJahr = Me.cmbJahrDas gehört auch nicht in den Change-Event (der nach jedem Zeichen aufgerufen wird, das Du tippst), sondern in den AfterUpdate-Event.
Wenn das Feld, das Du abfragen willst, ein Datumsfeld ist, kannst Du einfach "YEAR(Datumsfeld) = [Formulare]![frmProjekteVerwaltung]![txtJahr]" schreiben.
Es wäre aber hilfreicher, wenn Du die Abfrage auf SQL umschaltest und den gesamten Text dort hier hineinkopierst, denn "Abfrage zu komplex" hat sicher nichts mit diesem Filter zu tun.
Bei SQL Server ist der Joker zwar "%" statt "*", das gilt aber nur, wenn man T-SQL einsetzt, also z.B. eine Pass-Through-Abfrage oder eine Abfrage in VBA mit ADO formuliert.
Gruß
Christian
			
			
			
				Also das Me.txtJahr = Me.cmbJahr ist gut aber in Abfrage bekomme ich eine Fehlermeldung " Interner Fehler"
"YEAR(proStartDatum) = [Formulare]![frmProjekteVerwaltung]![txtJahr]"
			
			
			
				SELECT tblProjekte.projektID, tblProjekte.proNummer, tblProjekte.proBeschreibung, tblProjekte.proProjektGeschlossen, tblProjekte.proStartDatum, tblProjekte.DatumAenderung
FROM tblProjekte
WHERE (((tblProjekte.proStartDatum)="YEAR(proStartDatum) = [Formulare]![frmProjekteVerwaltung]![txtJahr]"));
			
			
			
				Hallo,
versuche es so:
SELECT projektID
    ,proNummer
    ,proBeschreibung
    ,proProjektGeschlossen
    ,proStartDatum
    ,DatumAenderung
FROM tblProjekte
WHERE YEAR(proStartDatum) = [Formulare]![frmProjekteVerwaltung]![txtJahr]
			
			
			
				Als Abfrage?
			
			
			
				Interner Fehler, wenn ich die Abfrage ausführen will
			
			
			
				Hallo,
ZitatAls Abfrage?
Das ist jetzt aber eine eigenartige Frage, was soll das sonst sein, als eine Abfrage ?
Die Abfrage ist nur leserlich formatiert.
			
				Hallo,
zeige bitte jetzt noch mal die Abfrage (SQL). Das sollte eigenlich logisch sein, dass man die Abfrage immer zeigt. Wie sonst soll man Fehler finden ?
Und wie führst Du diese aus ?
			
			
			
				SELECT tblProjekte.projektID, tblProjekte.proNummer, tblProjekte.proBeschreibung, tblProjekte.proProjektGeschlossen, tblProjekte.proStartDatum, tblProjekte.DatumAenderung
FROM tblProjekte
WHERE (((tblProjekte.proStartDatum)="WHERE YEAR(proStartDatum) = [Formulare] ! [frmProjekteVerwaltung] ! [txtJahr]"));
			
			
			
				Hallo,
die gezeigte Abfrage entspricht nicht meiner Abfrage in #21.
Die Whereklausel ist komplett falsch.
Und wie du die Abfrage ausführst hast du auch nicht verraten. 
			
			
			
				Hallo,
wenn Du doch gesehen hast, wie eine Abfrage in SQL aussieht und Du bekommst eine geänderte Abfrage, ebenfalls in SQL, wieso gibst Du dann den WHERE-Teil im Abfragedesigner ein statt die SQL-Abfrage im SQL-Editor zu ersetzen?
Was denkst Du, wenn Du diese Zeile liest?
WHERE (((tblProjekte.proStartDatum)="WHERE YEAR(proStartDatum) = [Formulare] ! [frmProjekteVerwaltung] ! [txtJahr]")); 
2x WHERE? Startdatum = Text in Anführungszeichen? Text ist "WHERE..."? Macht Dich das so gar nicht stutzig?
So ein bißchen nachdenken sollte man vielleicht auch.
Darüber hinaus hat Klaus je ein Leerzeichen vor und nach "!" zuviel, die müssen auch raus.
Ich würde eine Abfrage auch immer mit Tabellenalias qualifizieren, auch als Prefix für jedes Feld, aber ich traue mich ja schon nicht, das zu schreiben, da Du den Hinweis vermutlich auch nicht verstehen/umsetzen könntest.
Gruß
Christian
			
			
			
				Hallo,
@christian die Leerzeichen fügt der SQL Formatierer immer wieder automatisch ein und manchmal vergesse ich die dann zu löschen. Habe es jetzt aber nachgeholt. 
			
				Zitat von: Bitsqueezer am Februar 05, 2025, 17:05:06Hallo,
wenn Du doch gesehen hast, wie eine Abfrage in SQL aussieht und Du bekommst eine geänderte Abfrage, ebenfalls in SQL, wieso gibst Du dann den WHERE-Teil im Abfragedesigner ein statt die SQL-Abfrage im SQL-Editor zu ersetzen?
Was denkst Du, wenn Du diese Zeile liest?
WHERE (((tblProjekte.proStartDatum)="WHERE YEAR(proStartDatum) = [Formulare] ! [frmProjekteVerwaltung] ! [txtJahr]")); weißt du wenn man sich damit stunden beschäftigt verliert man irgendwann den Blick fürs wesentliche
2x WHERE? Startdatum = Text in Anführungszeichen? Text ist "WHERE..."? Macht Dich das so gar nicht stutzig?
So ein bißchen nachdenken sollte man vielleicht auch.
Darüber hinaus hat Klaus je ein Leerzeichen vor und nach "!" zuviel, die müssen auch raus.
Ich würde eine Abfrage auch immer mit Tabellenalias qualifizieren, auch als Prefix für jedes Feld, aber ich traue mich ja schon nicht, das zu schreiben, da Du den Hinweis vermutlich auch nicht verstehen/umsetzen könntest.
Gruß
Christian
			 
			
			
				Hallo,
und was willst du jetzt mit einem kompletten Beitrag als Zitat? 
			
			
			
				Guten Morgen Ok sorry mein Fehler, die Abfrage funktioniert, Danke nochmal für die Hilfe, noch eine Frage wie kann ich die Abfrage so erweitern das auch ein Kontrollkästchen abgefragt wird
			
			
			
				allo,
und wie heist das KK in der Tabelle und im Formular ?
Abfrage auf True oder False ?
			
			
			
				proArbeitenAbgeschlossen Hafo und in der Tabelle proArbeitenAbgeschlossen Abfrage -1 oder 0
			
			
			
				Hallo,
bitte meine Fragen vollständig beantworten. 
			
			
			
				Das ist die Originál
SELECT tblProjekte.projektID, tblProjekte.proNummer, tblProjekte.proBeschreibung, tblProjekte.proProjektGeschlossen, tblProjekte.proStartDatum, tblProjekte.DatumAenderung
FROM tblProjekte
WHERE (((tblProjekte.proProjektGeschlossen) Like "*" & [Formulare]![frmProjekteVerwaltung]![comAuswahl] & "*") AND ((tblProjekte.proStartDatum) Like "*" & [Formulare]![frmProjekteVerwaltung]![txtJahr]));
 Abfrage
			
			
			
				Hallo,
sorry, aber was hast Du aus den 35 Beiträgen gelernt ?
Die gezeigte Abfrage entspricht doch in keinster Weise den bisherigen Vorschlägen. Like ist wieder drin und das Jokerzeichen (*) auch. Die Abfrage ist eine Katastrophe. Von einem Feld "proArbeitenAbgeschlossen" ist in der Abfrage auch nichts zu sehen.
Und meine Frage  
ZitatAbfrage auf True oder False ? 
Ist immer noch nicht beantwortet.
			
				So wohl als Auch Über die KK wird entweder Geschlossen oder Geöffnet Ausgewählt 
			
			
			
				Hallo,
versuche es so:
SELECT projektID
    ,proNummer
    ,proBeschreibung
    ,proProjektGeschlossen
    ,proStartDatum
    ,DatumAenderung
FROM tblProjekte
WHERE YEAR(proStartDatum) = [Formulare]![frmProjekteVerwaltung]![txtJahr] And proProjektGeschlossen = True
			
			
			
				Ja aber ich brauche das mit true oder false�
			
			
			
				Hallo,
das ist doch drin. True oder False ist alternativ zu verwenden, entweder True oder False.
Wenn Du nicht klar kommst, erstelle eine Beispieldb und lade diese hier hoch.
PS:
Deine Kurzantworten die fast immer eine Rückfrage benötigen sind nervig.
			
			
			
				Ja wenn ich das Händisch mache past es ja ich möchte aber aber gerne den wert true oder false über eine kk eingeben
ich hab zwei kk eine ist das Datum und das zweite kk hat die werte true oder false.
			
			
			
				Hallo,
dann so:
SELECT projektID
    ,proNummer
    ,proBeschreibung
    ,proProjektGeschlossen
    ,proStartDatum
    ,DatumAenderung
FROM tblProjekte
WHERE YEAR(proStartDatum) = [Formulare]![frmProjekteVerwaltung]![txtJahr] 
And proProjektGeschlossen = [Formulare]![frmProjekteVerwaltung]!proArbeitenAbgeschlossen
			
			
			
				Nur so nebenbei, - sollte man nicht lieber [Forms]!... statt [Formulare]!...
schreiben?
			
			
			
				@Beaker s.a. ist egal und funktioniert nicht in VBA. Formularbezüge sollte man eh vermeiden und es es gibt immer die Möglichkeit, den SQL-String zusammenzusetzen oder wenn es öfter gebraucht wird, das mit einer Parameterabfrage zu lösen.
Grüße
Ulrich
			
 
			
			
				Hallo,
naja, ganz egal ist es nicht. In einer deutschen Access-Version ist es egal, weil Access das automatisch übersetzt. Läßt man das in einer englischen Version laufen, "weiß" Access nicht, daß das aus einer deutschen Version kam und schmeißt Fehler aus, weil es "Formulare" nicht kennt. Daher macht es schon Sinn, immer darauf zu achten, daß hier "Forms" steht, weil damit alle Sprachversionen klarkommen.
Der Abfragedesigner könnte das dagegen wieder selbständig ändern.
(Ich hatte dieses Problem selbst schon in der Konstellation Entwicklung deutsche Version und Anwendung englische Version.)
Gruß
Christian
			
			
			
				Danke für die Hilfe noch eine lezte Frage währe es klüger die Abfragen in VB zu schreiben?
			
			
			
				Hallo,
eine Abfrage ist SQL und hat mit VB oder VBA nichts zu tun. Von daher ist es gar nicht möglich Abfragen in VB zu schreiben. Man kann mit VB(A) Abfragen als SQL Befehlsfolge zusammenbauen und dann ggf ausführen oder als Datenquelle für eine Formular/Bericht verwenden. Abfragen werden immer mit SQL geschrieben. Und eine Abfrage ist immer SQL.
			
			
			
				na ich frage ja nur weil der Übertragung Microsoft SQL Server Migration Assistent for Access die Abfragen ignoriert werden die solche abfragen enthalten 
			
			
			
				Hallo,
wie gesagt, Abfragen sind SQL und kein VB(A). Und wie der Name schon sagt, ist SQL Server auch SQL.
Die SQL Versionen unterscheiden sich nur durch einen unterschiedlichen Befehlsumfang.
Man kann wie auch bereits gesagt SQL Befehlsfolgen per VB(A) zusammensetzen, aber die Abfrage ist dann trotzdem SQL.
			
			
			
				ok, danke an allen die mir geholfen haben