Neuigkeiten:

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

Mobiles Hauptmenü

Problem mit "langer Text"

Begonnen von Felicé, November 05, 2024, 16:22:44

⏪ vorheriges - nächstes ⏩

Felicé

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...

MzKlMu

Hallo,
zeige bitte mal die Abfrage (SQL).

Wozu braucht man in einem Infofeld für einen Zähler mehr als 255 Zeichen ?
Gruß
Klaus

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Felicé

Tatsächlich gruppiere und sortiere ich in der Abfrage. Gibt's ein workaround?

Felicé

#4
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;

Felicé

Uiuiui, wenn ich mir das in SQL anschaue, siehts irgendwie sch***e aus....

MzKlMu

#6
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.
Gruß
Klaus

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

knobbi38

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

Knobbi38

PhilS

@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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Felicé

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...

Felicé

Das mit Erster Wert funktioniert fantastisch. Danke ;)

MzKlMu

#12
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 ?
Gruß
Klaus

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

#14
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.
Gruß
Klaus