Neuigkeiten:

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

Mobiles Hauptmenü

Aufteilen von Abfrage

Begonnen von raiwo, Februar 17, 2015, 20:02:55

⏪ vorheriges - nächstes ⏩

raiwo

Hallo Zusammen !

Habe folgendes Problem:  Ein in der Abfrage vorhandenes Memo Feld muss ich wegen eines Formulares in 2 Felder aufgeteilt haben. Es handelt sich hier um einen Zutatentext der in 2 unterschiedlich große Felder eingebracht werden muss. Schön wäre es auch wenn das Wort nicht mittig abgeschnitten würde. Die Zutaten sind über Komma getrennt. Habe die Möglichkeit links..... und rechts  schon probiert, die schneidet aber nach der eingestellten Anzahl an Buchstaben ab.   

MzKlMu

Hallo,
und wie hast Du Dir die Teilung vorgestellt, irgendeine Regel musst Du ja aufstellen. Halber Text ?

ZitatDie Zutaten sind über Komma getrennt.
Warum ist die DB nicht richtig aufgebaut ?
Die Zutaten gehören in eine extra Tabelle, je Zutat ein Datensatz. Dann hättest Du Dein jetziges Problem erst gar nicht.
Gruß Klaus

raiwo

Hm...
Die Zutatentexte sind auch über Access abfragen erstellt und manuell übertragen worden. Da steht sonst meist etwas doppelt drin. Da in unserem Gewerk leider speziell die Deklarierung immer extremer wird musste das so gemacht werden.

Zu deiner anderen Frage halber Text oder aber zeichenzahl schwebt mir vor.

Danke für die schnelle Reaktion

Rainer

bahasu

Hi,

schwebt Dir eine Aufteilung wie im Beispiel (siehe Anhang) vor?
Durch Komma getrennte Daten werden auf zwei Felder aufgeteilt.
Soll als Beispiel dienen für eigene Versuche.

Harald
Servus

raiwo

Hallo Harald !

Vielen Dank aber das ist es nicht. Es geht darum das ich eine Abfrage mit deren Hilfe ich Etiketten drucke. Der Zutatentext ist leider unterschiedlich lang, die neue LMIV Verordnung schreibt eine sehr große Schrift und bei nicht "mitwachsendem"
Etikett vor.  Ich habe derzeit folgendes Problem. Gebe mal einen Zutatentext vor:

Zutaten:Kartoffeln 50%(enthält SULFITE), Zwiebeln, Trinkwasser, Rapsöl, HühnerEIer, Schinkenwurst 6%((Schweinefleisch,  Speck, Dextrose, Farbstoff : Echtes Karmin(E120) Gewürze,  natürliches Aroma, Säureregulator E331, Antioxidationsmittel: Ascorbinsäure), Gurken, Zucker, Branntweinessig, Wachsmaisstärke, HühnerEIGELB, Speisesalz, SENFsaaten, Kräuter, Gewürze, Stabilisatoren: Johannisbrotkernmehl, Guarkernmehl, Xanthan.

Dieser Text ist ein mehr Zeiler, der in 2 Feldern aufgeteilt werden muss. 2 Felder weil ich keinen anderen Platz habe. Möchte also im Grunde wie in der Zeitung ein Bild mit Text einrahmen.
Mit deinem Beispiel kann ich aber nur eine feste Anzahl von Wörtern die aber unterschiedlich lang sein können einbringen, was ist wenn ich mehrere Vielsilbige lange Worte im Text habe, was ist wenn ich viele Einsilbige Wörter habe, der Text wäre aufgeteilt aber zu kurz.

Rainer

bahasu

Hi,

Zitat von: raiwo am Februar 17, 2015, 20:02:55
Schön wäre es auch wenn das Wort nicht mittig abgeschnitten würde.

Um das umzusetzen diente mein Beispiel, das zu Deinen eigenen weiteren Versuchen dienen soll.

Denkbar wäre:
Halbe Zutatenliste von rechts kommend auf Komma-Vorkommen untersuchen
Anhand dieser Position das erste Zutatenfeld füllen und das zweite mit dem rechten Teil.

Harald
Servus

raiwo

Hatte ich auch so verstanden, scheitert aber an unterschiedlicher Länge der Texte, bei einem langen Text habe ich so einen gefüllten und bei einem kurzen 2 halbgefüllte Texte.

Aber ich versuchs weiter, Danke.


Rainer

raiwo

Ich bin zu dumm zum zum....

Entweder habe ich die Befehle nicht begriffen oder das was ich möchte kann Access nicht.


MaggieMay

Hi,

du könntest eine maximale Länge festlegen, die in ein Textfeld passt und wenn der Text länger ist, teilst du ihn auf zwei Felder auf.

Oder willst du ihn grundsätzlich auf zwei Felder aufteilen? Wo genau ist das Problem?
Zitatbei einem langen Text habe ich so einen gefüllten und bei einem kurzen 2 halbgefüllte Texte.
Das verstehe ich ehrlich gesagt nicht, wie hast du das denn umgesetzt?
Freundliche Grüße
MaggieMay

raiwo

Hallo Maggie !

Bei einer maximalen Länge von x schneidet mir Access den Datensatz teilweise mitten im Wort ab. Ich würde das gern ein wenig eleganter haben wollen. Habe hier eine DB mit ca. 4000 Datensätzen unterschiedlicher Länge.

Rainer

MaggieMay

#10
Du musst halt ausgehend von x das nächste Leerzeichen nach links suchen.
Die InstrRev-Funktion sollte hierbei helfen.

Beispiel:text1 = Left(txtZutaten, InstrRev(Left(txtZutaten, 250), " ")) (ungetestet)

oder:i = InstrRev(Left(txtZutaten, 250), " ")
text1 = Left(txtZutaten, i)
text2 = Mid(txtZutaten, i+1)


oder so:Private Sub Form_Current()
    Dim txtZutaten
    txtZutaten = Me.Zutaten
    Dim i, text1, text2
    If Len(txtzutaen) > 250 Then
        i = InStrRev(Left(txtZutaten, 250), " ")
        Me.Zutat_1 = Left(txtZutaten, i)
        Me.Zutat_2 = Mid(txtZutaten, i + 1)
    Else
        Me.Zutat_1 = txtZutaten
    End If
End Sub

Basierend auf dem Beispiel von Harald, Abfrage durch Tabelle ersetzt, Teiltexte ungebunden.
Freundliche Grüße
MaggieMay

raiwo

Hallo Maggie


Habe mich mal auf das 1. eingelassen, bekomme bei sehr kurzen Datensätzen also unter 250  jetzt ein Ergebnis bei dem der letzte fehlt. Ansonsten sah das sehr gut aus.

raiwo

Alles nicht das Gelbe vom Ei, durch die unterschiedliche Länge der Wörter macht er mal einen 3 dann einen Vierzeiler bin jetzt auf 195 runter

bahasu

Hi,

als Idee:
Möglichkeit 1:
von Proportionalschrift auf feste Schriftbreite wechseln.

Möglichkeit 2:
Tabelle mit Breite der Buchstaben anlegen und die theoretische Breite berechnen und danach die Anzahl der Zeichen für die Aufsplittung festlegen.

Harald
Servus