Hallo liebe Community,
ich habe versucht in einer Tabelle mit dem Format "langer Text" zu arbeiten. In den Abfragen auf die diese Tabelle werden mir jetzt asiatische Schriftzeichen und WinDings angezeigt. Was mache ich falsch? Woran kann das liegen? Was besonders wunderlich ist, ist der Umstand dass obwohl bisher keines der Felder gefüllt worden ist (Kein Inhalt) immer unterschiedliche Zeichen angezeigt werden.
Vielen Dank für eure Hilfe vorab...
Hallo,
zeige bitte mal die Abfrage (SQL).
Wozu braucht man in einem Infofeld für einen Zähler mehr als 255 Zeichen ?
Zitat von: Felicé am November 05, 2024, 16:22:44Woran kann das liegen?
Ich meine mich zu erinnern, dass es da einen Bug in Access gab, der so etwas verursachen könnte.
Sortierst oder gruppierst du in der Abfrage nach der "Langer Text"-Spalte?
Ich schließe mich Klaus an, das SQL der Abfrage wäre wahrscheinlich hilfreich.
Tatsächlich gruppiere und sortiere ich in der Abfrage. Gibt's ein workaround?
SELECT DISTINCT tblZähler.Auswahl
,tblMandant.ID_Mandant
,tblMandant.Mandant_Name
,tblMandant.Mandant_Name
,tblWIE.WIE_Nr
,tblWIE.WIE_Bezeichnung
,tblZähler.Zähler_Nr
,tblVertrag.Vertrags_Nr
,tblZählerArt.Zählertyp
,tblZähler.Erfasst
,tblZähler.Zaehler_Info_neu
,tblZähler.Zähler_Info
,tblZähler.Stillgelegt
,tblZähler.Reinfolge
,tblZähler.Ableser_ID
,tblAbleser.Ablesername
,tblAbleseturnus.ID_Ablesturnus
,tblAufgang.Straße
,Max(tblStand.Stand) AS MaxvonStand
,tblZähler.TageSeitLtztAbles
,tblZähler.BekoRelevant
,IIf([TageSeitLtztAbles] > 30, "älter", (IIf(IsNull([TageSeitLtztAbles]), "älter", "aktuell"))) AS Aktuell
,tblZähler.ID_Zähler
,tblVertrag.ID_Vertrag
,tblMandant.Mandant_Name
,tblMandant.Mandant_Name
,tblZählerArt.Einheit
,tblWIE.Ort
,Max(tblStand.Datum) AS MaxvonDatum
FROM (
tblZählerArt INNER JOIN (
(
tblMandant INNER JOIN tblWIE ON tblMandant.ID_Mandant = tblWIE.[OE_Nr]
) INNER JOIN (
tblVertrag RIGHT JOIN (
tblAufgang INNER JOIN (
tblAbleseturnus INNER JOIN (
tblAbleser INNER JOIN tblZähler ON tblAbleser.ID_Ableser = tblZähler.Ableser_ID
) ON tblAbleseturnus.ID_Ablesturnus = tblZähler.Ableseturnus_ID
) ON tblAufgang.ID_Aufgang = tblZähler.Aufgang_ID
) ON tblVertrag.ID_Vertrag = tblZähler.Vertrag_ID
) ON tblWIE.ID_WIE = tblAufgang.WIE_ID
) ON tblZählerArt.ID_ZählerArt = tblZähler.ZählerArt_ID
)
LEFT JOIN tblStand ON tblZähler.ID_Zähler = tblStand.Zähler_ID
GROUP BY tblZähler.Auswahl
,tblMandant.ID_Mandant
,tblWIE.WIE_Nr
,tblWIE.WIE_Bezeichnung
,tblZähler.Zähler_Nr
,tblVertrag.Vertrags_Nr
,tblZählerArt.Zählertyp
,tblZähler.Erfasst
,tblZähler.Zaehler_Info_neu
,tblZähler.Zähler_Info
,tblZähler.Stillgelegt
,tblZähler.Reinfolge
,tblZähler.Ableser_ID
,tblAbleser.Ablesername
,tblAbleseturnus.ID_Ablesturnus
,tblAufgang.Straße
,tblZähler.TageSeitLtztAbles
,tblZähler.BekoRelevant
,IIf([TageSeitLtztAbles] > 30, "älter", (IIf(IsNull([TageSeitLtztAbles]), "älter", "aktuell")))
,tblZähler.ID_Zähler
,tblVertrag.ID_Vertrag
,tblMandant.Mandant_Name
,tblZählerArt.Einheit
,tblWIE.Ort
,tblMandant.Mandant_Name
HAVING (
((tblZähler.Auswahl) = [Formulare] ! [frmZählernavigation2] ! [cbxAuswahl])
AND ((tblWIE.WIE_Bezeichnung) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxWIENR] & "*")
AND ((tblZählerArt.Zählertyp) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxZählertyp] & "*")
AND ((tblZähler.Erfasst) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxErfasst] & "*")
AND ((tblZähler.Stillgelegt) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxStillgelegt] & "*")
AND ((tblAbleser.Ablesername) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxAbleser] & "*")
AND ((tblAbleseturnus.ID_Ablesturnus) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxTurnus] & "*")
AND ((tblZähler.BekoRelevant) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxBEKO] & "*")
AND ((IIf([TageSeitLtztAbles] > 30, "älter", (IIf(IsNull([TageSeitLtztAbles]), "älter", "aktuell")))) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxAktuell] & "*")
AND ((tblWIE.Ort) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxGemeinde] & "*")
AND ((tblMandant.Mandant_Name) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxOENr] & "*")
)
OR (
((tblWIE.WIE_Bezeichnung) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxWIENR] & "*")
AND ((tblZählerArt.Zählertyp) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxZählertyp] & "*")
AND ((tblZähler.Erfasst) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxErfasst] & "*")
AND ((tblZähler.Stillgelegt) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxStillgelegt] & "*")
AND ((tblAbleser.Ablesername) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxAbleser] & "*")
AND ((tblAbleseturnus.ID_Ablesturnus) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxTurnus] & "*")
AND ((tblZähler.BekoRelevant) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxBEKO] & "*")
AND ((IIf([TageSeitLtztAbles] > 30, "älter", (IIf(IsNull([TageSeitLtztAbles]), "älter", "aktuell")))) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxAktuell] & "*")
AND ((tblWIE.Ort) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxGemeinde] & "*")
AND ((tblMandant.Mandant_Name) LIKE "*" & [Formulare] ! [frmZählernavigation2] ! [cbxOENr] & "*")
AND (([Formulare] ! [frmZählernavigation2] ! [cbxAuswahl]) IS NULL)
)
ORDER BY tblMandant.ID_Mandant
,tblWIE.WIE_Bezeichnung
,tblZähler.Stillgelegt DESC
,tblZähler.Reinfolge
,tblZähler.ID_Zähler;
Uiuiui, wenn ich mir das in SQL anschaue, siehts irgendwie sch***e aus....
Hallo,
das ist ein Access Bug, Lösung habe ich im Moment nicht, muss erst mal suchen. Aber die Frage warum da keine 255 Zeichen reichen hast Du nicht beantwortet.
Steht in dem Feld so viel drin ?
Wenn ich die Abfrae so ansehe, möchte ich das Datenmodell bezweifeln.
Und DISTINCT und GROUP BY ist auch zweifelhaft. Ist über alle Felder gruppiert ?
Zeige mal ein Bild des Beziehungsfensters.
Zitat von: Felicé am November 06, 2024, 07:48:15Uiuiui, wenn ich mir das in SQL anschaue, siehts irgendwie sch***e aus....
Ich habe mir erlaubt das mal durch einen SQL-Formatter zu jagen und deinen Post entsprechend zu aktualisieren.
Hallo,
da war mal was, wenn auf MEMO Felder gruppiert werden sollte. Man könnte mal probieren, eine Aggregatfunktion wie z.B. First() zu verwenden oder man nimmt das Memo Feld aus der Gruppierung.
Wieso hast wird eigentlich gruppiert und distinct gleichzeitig verwendet?
Einen richtigen Workaround kenne ich auch nicht.
Siehe auch hier:
http://allenbrowne.com/bug-18.html (http://allenbrowne.com/bug-18.html)
Knobbi38
@Felicé , wahrscheinlich wäre es ein einfacher Workaround, wenn du die Abfrage auf 2 aufteilst.
Erstmal mit Gruppierung tblStand abfragen um den letzten Zählerstand pro Zähler zu ermitteln. Das als eine Abfrage speichern.
Dann eine zweite Abfrage auf die erste, in der du dann die übrigen Tabellen ohne Gruppierung dazu holst.
vielen dank für die vielen kommentare und ideen. eigentlich habe ich auch gedacht, dass das infofeld mit 255 zeichen reichen müsste aber einige kollegen möchten dort auch rechnungsnummern hinterlegen. es ist kompliziert...
Das mit Erster Wert funktioniert fantastisch. Danke ;)
Hallo,
Zitataber einige kollegen möchten dort auch rechnungsnummern hinterlegen.
Das solltest Du verhindern. Rechnungsnummer haben in einem Feld mit dem Namen "Zaehler_Info_Neu" ganz sicher nichts zu suchen. Und mehrere Rechnungsnummern erst recht nicht.
Ich hatte mal nach dem Beziehungsbild gefragt, gibt es da nichts ?
ZitatDas mit Erster Wert .....
ErsterWert ist mit Vorsicht anzuwenden. Der Befehl liefert eher einen zufälligen Wert und nicht wie man meinen könnte den ersten Wert. Das hängt alles von der Sortierung ab.
PS:
Klemmt Deine Shift Taste weil Du alles klein schreibst ?
Zitat von: MzKlMu am November 07, 2024, 11:44:31Erster Wert ist mit Vorsicht anzuwenden. Der Befehle liefert eher einen zufälligen Wert und nicht wie man meinen könnte den ersten Wert. Das hängt alles von der Sortierung ab. Außerdem hat hier niemand d "Erster Wert" vorgeschlagen. First() ist etwas anderes.
Wenn ich jetzt nicht völlig verwirrt bin, ist First und ErsterWert exakt dasselbe.
First wird in dem oben verlinkten Workaround von Allen Browne vorgeschlagen.
Normalerweise teile ich deine Warnung vor First. Hier in diesem Fall sollte es aber kein Problem sein, da es eigentlich nur einen Zähler-Datensatz geben kann und somit eine zufällige Auswahl kein Problem sein sollte.
Hallo Philipp,
ZitatWenn ich jetzt nicht völlig verwirrt bin, ....
Ich war verwirrt und Du warst zu schnell. Ich habe nach 3-4 Minuten das auch gemerkt und den Absatz gelöscht.
Ich hatte den VBA Befehl FindFirst im Kopf.