Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: walker950 am März 31, 2020, 17:59:59

Titel: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am März 31, 2020, 17:59:59
Guten Abend zusammen
Ich möchte folgendes erreichen, beide Tabellen sollen überprüft werden ob die gleichen Datensätze vorhanden sind.Wenn nicht sollen die Abfragen das anzeigen.

1. Tabelle A sind die Datensätze so
03400.600_0001_Kurzzeichen_Ort
03400.600_0025_0125_Kurzzeichen_Ort

2.Tabelle B sind die Datensätze so
03400.600_0001
03400.600_0025_0125
   
3.Abfrage1 prüft welche Werte sind in Tabelle A, aber nicht in
Tabelle B vorhanden.

4.Abfrage2 prüft welche Werte sind in Tabelle B, aber nicht in
Tabelle A vorhanden.

Das scheint so weit zu funktionieren. Mein Problem sind die unterschiedlichen Längen der Datensätze.

5.Von Links jeweils 14 und 19 Zeichen

6. Ich habe versucht mit der Left Funktion (siehe Tabelle1) das zu erreichen. Das klappt nur bedingt, dass heisst entweder mit 14 oder mit 19 Zeichen.
Das Ziel wäre das automatisch unterschieden wird wann wie viele Zeichen weg müssen. Genau an dieser Stelle hänge ich fest. Meine Google Suche hat etwas von Regx ergeben, damit sollen Muster festgelegt werden können damit mein vorhaben funktioniert. Leider verstehe ich das ganze mit den Modulen und Regex nicht und wäre über Hilfe dankbar.
Beiliegend meine Datei.
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: DF6GL am März 31, 2020, 20:25:49
Hallo,

vermutlich hilft am Besten eine Atomisierung der Felder als Vorbereitung für eine geeignete Verjoinung der Tabellen.

Die Instr()-Funktion im "ON"-Condition-Ausdruck könnte  auch zum Ziel führen.





Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 01, 2020, 08:18:08
Zitatbeide Tabellen sollen überprüft werden ob die gleichen Datensätze vorhanden sind
Du sprichst von Datensätzen, zeigst aber zusammengefasste Inhalte in einem Feld. Hat man das extra schlau gemacht, um damit im Nachgang nicht mehr zurecht zu kommen?
Zitat03400.600_0002_1547_Kurzzeichen_Ort
Man würde vermuten, dass die sechs Zeichenfolgen jeweils eigene atomare Bedeutungen haben und also nach den Regeln der Normalisierung in eigene Felder gehören. Zwei, drei felder in Kombination auf Gleichheit zu prüfen ist dann nicht mehr die große Herausforderung und übrigens auch schneller - manchmal spielt ja Performance auch eine Rolle.
Für eine solche einmalige Umstrukturierung wären RegEx ein geeignetes Mittel, für den laufenden und wiederholten Abfragebetrieb eher nicht (es geht, ist aber aufwändig, umständlich, unter dem Strich langsamer).

Zur Überbrückung in der gezeigten einfachen Konstellation kann man auf eine Mustersuche per LIKE zurückgreifen. Beispiel für Datensätze, die es in A, aber nicht in B gibt:
SELECT
   A.*
FROM
   A
WHERE
   NOT EXISTS
      (
         SELECT
            NULL
         FROM
            B
         WHERE
            A.Projektnummer LIKE B.Projektnummer & "*"
      )
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 02, 2020, 08:49:26
Guten Morgen zusammen
@DF6GL
ZitatDie Instr()-Funktion im "ON"-Condition-Ausdruck könnte  auch zum Ziel führen.
Habe ich mich damit auseinander gesetzt. Diese sucht mein 1. definiertes Zeichen. Den Ausdruck "ON"-Condition habe ich gegoogelt und habe nichts gefunden wo mich weiterbringt. Für was ist dieser Audruck?
@ebs17
ZitatDu sprichst von Datensätzen, zeigst aber zusammengefasste Inhalte in einem Feld. Hat man das extra schlau gemacht, um damit im Nachgang nicht mehr zurecht zu kommen?
Der String befindet sich in einem QR Code der wird in die DB eingelesen, dass man weiss welche Akten bearbeitet sind. Ich gebe dir recht, es ist nicht "schlau" diese Vorgehensweise. Obwohl ich einen Artikel über die Normalisierung von Daten gelesen habe, habe ich das übersehen.
Ich habe das ganze versucht so darzustellen wie es hoffentlich korrekt ist?
frmJournalFilm dort werden die Daten erfasst bzw. der QR Code eingelesen. Datum/Uhrzeit kommt dann beim erstellen von den DS automatisch (habe ich noch nicht vorbereitet). Vorname.Name gleiches vorgehen wie beim Datum (habe ich noch nicht vorbereitet).

Nun habe ich mit dem qryVersuch zu Trennen probiert mein Ziel zu erreichen. Leider funktioniert es nicht richtig und ich weiss nicht wo ich den Fehler mache.
Den Code von dir habe ich integriert. Bezüglich Felddatentyp müsste ich vermutlich die Felder wo Zahlen vorkommen als solche definieren? Das habe ich versucht, die 0 werden immer abgeschnitten. Ich benötige die Daten genau so wie sie sind. Wenn ich Daten im Formular erfasse werden diese ja in der Tabelle gespeichert. Aber wie werden diese getrennt? Wenn ich es mit einer Abfrage versuche sind die Daten anschließend nicht in der Tabelle vorhanden.
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 02, 2020, 12:44:53
ZitatQR Code der wird in die DB eingelesen
O.K. bei Daten von außen hat man weniger Einfluß auf Strukturen, und die Erzeuger solcher haben noch weniger Ahnung von und Bewusstsein zu datenbank- und verarbeitungsgerechten Strukturen. Ich meine aber auch: Wer so etwas klaglos übernimmt, wird anders herum auch solches selber erzeugen und dem Nächsten vor Probleme stellen.

Allerdings: Ein Import ist eine Schnittstelle und somit die Chance, bereits hier Daten in benötigte brauchbare Strukturen umzulegen und in diese abzuspeichern. Das ist dann ein einmaliger Vorgang pro Import und aber ganz schnell effizienter als Daten so wie sie sind herzunehmen und bei jeder Verarbeitung und jeder Wiederholung einer solchen Kopfstände wegen gleichartiger Trennungen aufführen zu müssen.
Beinahe jeder Lagerist macht sich die Mühe, sein Zeug in Regale, Schieber, Fächer einzuräumen statt einen großen Haufen zu liegen haben.

Die QR-Codes kommen wie genau an? Bereits als Datensätze in einer Tabelle, oder findet vor Ort ein Scannen und Schreiben statt, also einzelne Erfassung. Davon würde man die genaue Methode des Trennens abhängig machen, ich zumindest, damit es direkt, einfach, schnell, fehlerfrei ist.

ZitatBezüglich Felddatentyp müsste ich vermutlich die Felder wo Zahlen vorkommen als solche definieren?
Hervorragend mitgedacht. Eine Zahl vom Typ Long belegt 4 Byte, ein Text von 4 Zeichen 4 * 2 Byte plus 10 Byte Verwaltung dazu. Masse macht Arbeit. Bei jeder Verarbeitung wie Vergleich, Filter, Gruppieren, Sortieren wird sich das summieren und multiplizieren und eine Auswirkung auf die Laufzeit haben.
Zahlen könnte man dann auch einfach hochzählen, Texte nicht.

Zur Ansicht für User, ReExport & Co.: Das Zusammensetzen ist dann simpel über eine Abfrage realisierbar. Diese kann man in sehr vielen Fällen tabellengleich verwenden:
SELECT Projektnummer & "_" & Format(ID1, "0000") & "_" & Format(ID2, "0000") & "_" & Kurzzeichen & "_" & Ort AS Code
FROM JournalFilm

Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 02, 2020, 19:59:22
Guten Abend
Danke für deine Unterstützung.
ZitatO.K. bei Daten von außen hat man weniger Einfluß auf Strukturen, und die Erzeuger solcher haben noch weniger Ahnung von und Bewusstsein zu datenbank- und verarbeitungsgerechten Strukturen.
Ok ich hole mal etwas aus damit der Zweck der Sache erkennbar wird. Auf Arbeit werden die Projektakten nach Abschluss des Projekt auf Mikrofilm zwecks Archivierung verfilmt. Als ich diesen Bereich vererbt bekam, hatten wir einen Scanner wo direkt auf einen Film gescannt wurde.
Dieser wurde zur Entwicklung an einen Produzenten geschickt. Retour kam der Mikrofilm, dieser wurde in das Betrachtungsgerät eingelegt und bei jedem Titelblatt wurde gestopt und der Wert auf dem Zähler von Hand auf ein Inhaltsverzeichnis geschrieben. Da die Geräte schon sehr alt, defekt und keine Ersatzteile mehr Verfügbar waren wurden neue Geräte angeschafft.

Der aktuelle Prozess ist so:
1. Akten werden mit einem Deckblatt mit 2 QR Code angeliefert. Als Bsp. Erster QR Code = 03400.600_0011 oder 03400.600_0025_0147 für das Scannen der Akten.
Stapelverarbeitung bei jedem Blatt wird getrennt und die Dateien wie oben benannt.
ZitatDie QR-Codes kommen wie genau an?
2. QR Code = 03400.600_0011_Kurzzeichen_Ort oder 03400.600_0011_0054_Kurzzeichen_Ort werden mit dem Handscanner in die DB gescannt Zwecks Registrierung und Nach Verfolgbarkeit. Kurzzeichen ( z.Z 4stellig) Ort variabel.
Zitat. Ich meine aber auch: Wer so etwas klaglos übernimmt, wird anders herum auch solches selber erzeugen und dem Nächsten vor Probleme stellen.
Da bin ich deiner Meinung, deshalb möchte ich es ja korrekt machen. Ja bin auch in die Falle bezüglich String getappt. Ich hatte nicht genügend Einfluss auf das ganze, da es gewisse Vorgaben gibt und an denen nicht zu rütteln ist.
Bezüglich Zahl als Felddatentyp wie bekomme ich das hin, dass die Nullen sichbar bleiben? 03400.600_0011_0014
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: MzKlMu am April 02, 2020, 20:09:10
Hallo,
Zitatwie bekomme ich das hin, dass die Nullen sichbar bleiben?
Das kannst Du in dem SQL Code von Eberhard in #4 bereits sehen. (Format....)
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 02, 2020, 23:04:31
Zitatdass die Nullen sichbar bleiben
Die müssen gar nicht bleiben. Ein Tabellenzahlenfeld könnte man zwar per Format-Eigenschaft beibringen, führende Nullen anzuzeigen, aber das ist wertfrei. In eine Tabelle sieht hoffentlich nur der Entwickler, und der braucht keine Kosmetik.
Für Anzeigen nach draußen kann man die Format-Anweisung einsetzen. Reduziertes Beispiel:
SELECT 123 AS Zahl, Format(123, "000000") AS Nuller

Hier sieht man nebenbei auch den Vorteil, das man einfachst von einem Vierer-Ziffernblock auf einen Sechser oder Achter umstellen könnte. Es könnte ja sein, jemand erkennt Eure Fähigkeiten und Euren Fleiß und belohnt Euch mit Datenbergen, die bisher angedachte Grenzen überschreiten.

Nachfolgend ein Ansatz. Ich tue dabei so, als ob der erste Block auch in Zahlen zu zerlegen wäre:
Sub ansatz_trennen()
    Const cQR = "03400.600_0011_0054_Kurzzeichen_Ort"
    Dim sArr() As String
    Dim ia As Long

    sArr = Split(cQR, "_")
    ia = UBound(sArr)

    ' Das Schreiben kann von Formulartextfeld zu Formulartextfeldern erfolgen
    ' oder auch aus einem Recordsetfeld in weitere Recordsetfelder
    Debug.Print "P1", Val(Split(sArr(0), ".")(0))
    Debug.Print "P2", Val(Split(sArr(0), ".")(1))
    Debug.Print "N1", Val(sArr(1))
    ' Verarbeitung abhängig von Inhalten
    Select Case ia
        Case 4
            Debug.Print "N2", Val(sArr(2))
            Debug.Print "KZ", sArr(3)
            Debug.Print "Ort", sArr(4)
        Case Else
            ' tu was ähnliches
    End Select
End Sub
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 04, 2020, 17:13:27
Guten Abend
Danke für deinen Beitrag. Ich habe versucht das Umzusetzen, irgend wie hänge ich fest verstehe das ganze nicht mehr.
ZitatIn eine Tabelle sieht hoffentlich nur der Entwickler, und der braucht keine Kosmetik.
Soweit ich weiss, sollen User nur Formulare, Abfragen und Berichte sehen. Ist meine Aussage richtig?
ZitatFür Anzeigen nach draußen kann man die Format-Anweisung einsetzen. Reduziertes Beispiel:
Kriege das nicht zum laufen, was mache ich falsch?
ZitatEs könnte ja sein, jemand erkennt Eure Fähigkeiten und Euren Fleiß und belohnt Euch mit Datenbergen, die bisher angedachte Grenzen überschreiten.
Ich hoffe doch sehr bis die 4stelligen aufgebraucht sind,dass wir nicht mehr Mikroverfilmen sondern eine Digitales Archiv haben  :)
Zu deinem Ansatz, genau nach dem suche ich. Hab eine Tabelle mit den Feldern aus dem Code erstellt. Zusätzlich ein Feld QR Code. Dann habe ich daraus ein Formular erstellt. Im Feld QR Code macht mann nun die Eingaben oder scannt den Code?
Wann wird der String zerlegt und in die Felder abgefüllt?
Im Direktbereichfenster sehe ich wie das ganze ausschaut. Nur verstehe ich nicht wie ich das ganze in die Tabelle bekomme. Habe heute versucht die Ordnerstruktur einzulesen habe einen Code gefunden wo das macht zu mindest im Vorschaufenster. Habe dann einen Code gesucht mit AddNew und auch gefunden der funktioniert. Nur möchte ich dort, das nicht die definierten Wert wo sich im Code befinden eingelesen werden, sondern meine Ordnerstruktur wo ich ausgelesen habe.
schönen Abend
Grüsse
walker950

Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: Beaker s.a. am April 04, 2020, 17:40:01
@Walker950
ZitatNur möchte ich dort, das nicht die definierten Wert wo sich im Code befinden eingelesen werden, sondern meine Ordnerstruktur wo ich ausgelesen habe.
Die Konstante hat Eberhard nur verwendet um dir den schnellen Test des
Prinzips des Aufsplittens zu ermöglichen. Diese Konstante musst du durch
den Inhalt des Scanfeldes ersetzen. Wobei ich den Wert an die Sub übergeben
würde (ausgehend von einem Formular ohne DS-Herkunft)
Private Sub DeinScanFeld_AfterUpdate()
    ansatz_trennen(Me.DeinScanFeld)
End Sub

Sub ansatz_trennen(cQR As String)
    Dim sArr() As String
    Dim ia As Long

    sArr = Split(cQR, "_")
    ia = UBound(sArr)
'usw.


Und statt der Debug.Prints schreibst du die Werte mit AddNew oder mit einer
Anfügeabfrage in deine Tabellenfelder.
gruss ekkehard
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 04, 2020, 21:41:04
Zitateine Digitales Archiv haben
Da braucht man auch Strukturen für Ordnung, die womöglich ein Mensch auch lesen können möchte ...?
Die Hoffnung, dass etwas nicht eintreten möge, ist ein unglückliches Prinzip.
Daten sind bekanntermaßen ein wertvolles Gut. Eine Datenbank mit etwas Wert hat für sich selber eine Lebensdauer von sehr schnell mehr als einem Jahrzehnt, und sie wird in einer weiteren Datenbank aufgenommen und weiterleben.

ZitatSoweit ich weiss, sollen User nur Formulare, Abfragen und Berichte sehen. Ist meine Aussage richtig?
Teilweise. Abfrageergebnisse stellt man besser ausschließlich in Formularen und Berichten dar. Dort kann man über Sperrungen und Ereignisprozeduren nach Events steuern, ob und was editiert werden darf.

Wenn man in Formularen und Berichten für die Einzelzahlen führende Nullen darstellen will/muss, kann man dort für das anzeigende Textfeld die Format-Eigenschaft verwenden.
Format-Eigenschaft: Ändert nur das Aussehen, nicht den inneren Wert. Zahl bleibt Zahl.
Format-Anweisung: Funktion, die den übergebenen Wert in einen String mit dem angegebenen Format ändert. String ungleich Zahl.

ZitatIm Direktbereichfenster sehe ich wie das ganze ausschaut.
Also kann man sehen, wie es prinzipiell funktionieren kann.
Ich hatte es aber bei diesem Ansatz bewusst belassen. Da Deine QRCodes unterschiedlich sind (die von Dir genannte ID2 kommt nur teilweise vor, Kennzahl und Ort dann auch), kann man nicht alles über diesen einen Leisten ziehen. Nach dem Trennen sollten ja auch die Inhalte in den richtigen Feldern landen, Murks ist nicht gefragt. Also müsste man erst über die möglichen Fälle eine entsprechende Zuordnung fixieren, ehe man an das bloße Einfügen geht.
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 05, 2020, 17:34:41
Guten Abend zusammen
Ich möchte einfach mal danke sagen, dass man hier fragen darf und man Hilfestellungen bekommt. Finde ich richtig super.

Ich versuche mal zusammen zu fassen. Die Daten vom
QR Code sehen so aus,
"03400.600_0000_Kurzzeichen_Ort" oder so
"03400.600_0000_0000_Kurzzeichen_Ort"
Die Tabelle Journal Filme soll nun folgende Felder enthalten, damit der String in einzelne Blöcke aufgeteilt werden kann.

ID Autowert,
Projektnummer1(03400), Projektnummer2(600)
ID1(0000), ID2(0000), Kurzzeichen(BAHA), Ort(Ort),
Registriert (Datum), Erstellt(Vorname Nachname)
Anzahl Bilder (Zahl), Rückgabe(Datum),
Visum(Vorname Nachname).

Tabelle Mikrofilm PDF (Ist ein Verzeichnis das eingelesen werden soll, wird dann in einer Abfrage mit Journal Filme auf Übereinstimmung geprüft)
ID Autowert,
Projektnummer1(03400), Projektnummer2(600)
ID1(0000), ID(0000)

Für die Erfassung des QR Code und den weiteren Daten würde man ein Formular machen wo an keine Tabelle gebunden ist? Die Trennung in einzelne Blöcke findet die in diesem Formular statt? Wenn die Daten getrennt sind dann wird in die Tabelle geschrieben?
Zur Ansicht für den User würde ein weiteres Formular oder ein UFO in dem Scan Formular eingebaut werden?

Mit den Abfragen kann ich dann die benötigten Daten wieder zusammen führen und in einem Formular ausgeben?
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: Beaker s.a. am April 06, 2020, 14:35:37
@walker950
ZitatFür die Erfassung des QR Code und den weiteren Daten würde man ein Formular machen wo an keine Tabelle gebunden ist?
Würde ich nicht machen, - ein gebundenes Formular ist doch einfacher zu
handhaben.
ZitatDie Trennung in einzelne Blöcke findet die in diesem Formular statt?Wenn die Daten getrennt sind dann wird in die Tabelle geschrieben?
Ja, erstelle ein Formular auf Basis deiner Zieltabelle mit allen Feldern. Zum
Scannen platzierst du ein ungebundenes Textfeld. Dann erfolgt die
Aufteilung in die (gebundenen) Formularfelder und das Speichern erfolgt
(mehr oder weniger) automatisch.
Den Code rufst du in der Ereignisprozedur "Nach Aktualisierung" auf
Private Sub DeinScanFeld_AfterUpdate()
' da jetzt ein gebundenes Formular zum Einsatz kommt, muss darauf geachtet werden,
'dass nur neue DS erfasst werden. Ein bestehender DS würde sonst überschrieben.
    If Me.NewRecord Then
        ansatz_trennen(Me.DeinScanFeld)
    End If
End Sub

Sub ansatz_trennen(cQR As String)
' Steht auch im Formularmodul. Falls du das später evtl. auch an anderer
' Stelle benötigst müsste die Prozedur in ein allgem. Modul verlagert und
' entsprechend angepasst werden (Formularbezug Me.)
    Dim sArr() As String
    Dim ia As Long

    sArr = Split(cQR, "_")
    ia = UBound(sArr)

    ' Das Schreiben kann von Formulartextfeld zu Formulartextfeldern erfolgen
    ' ist hier umgesetzt in gebundenem Formular
    ' oder auch aus einem Recordsetfeld in weitere Recordsetfelder
    With Me
        .txtProjektNr1 = Val(Split(sArr(0), ".")(0))
        .txtProjektNr2 = Val(Split(sArr(0), ".")(1))
        .txtID1 = Val(sArr(1))
        Select Case ia
        Case 4
            .txtKurzzeichen = sArr(2)
            .txtOrt = sArr(3)
        Case 5
            .txtID2 = Val(sArr(2))
            .txtKurzzeichen = sArr(3)
            .txtOrt = sArr(4)
        End Select
' Aktualisierung einer Anzeige aller Scans (siehe unten)
        ' mit einem UFo
        .NameUFoControl.Form.Requery
        ' mit einem Listfeld
        .NameListfeld.Requery
    End With
End Sub


Die weiteren Felder können dann manuell ausgefüllt und der DS gespeichert
werden.
ZitatZur Ansicht für den User würde ein weiteres Formular oder ein UFO in dem Scan Formular eingebaut werden?
Hier würde ich ein Ufo oder ein Listfeld verwenden (siehe Code) mit der gleichen
DS-Herkunft wie das Scan-Form.

gruss ekkehard
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 07, 2020, 17:02:17
Hallo zusammen
@ekkehard
Vielen Dank für die Unterstützung.
Ich habe den heutigen Tag damit verbracht, das ganze Darzustellen und versucht es zu verstehen. Leider ist mir das nur teilweise gelungen.

Tabelle1 habe ich mit den Feldern erstellt, wie auch das Formular (Tabelle1), dass UFO (test) mit DS Herkunft Tabelle1. Code eingefügt und angepasst. Mit der Einstellung UFo aktualisieren bin ich bis jetzt nicht zurecht gekommen, wie muss der Name des UFo dort eingetragen werden? Ich habe es dann mit ' ausgeschaltet. Dann wurden die Daten in der Tabelle gespeichert.

Mit dem Listenfeld hat es geklappt, nur die Überschriften fehlen mir noch.
Ich stellte dann fest, dass die Daten nicht alle angezeigt werden und auch teilweise in den falschen Feldern erscheinen. Ich versuchte es dann im Code anzupassen, leider ohne Erfolg.
Ich habe die folgenden DS zum testen verwendet:
03400.600_0001_HGAH_Musterhausen und
05400.400_0005_0012_ABCD_Musterstadt.
Wie bekomme ich das hin, dass sich das Feld QR Code leert wenn ich einen neuen DS anlege?

Da ich dem User den ganzen String der Einfachheit halber
anzeigen möchte, kann ich das auch im UFO oder Listenfeld machen oder besser mit einer Abfrage.? Bei Abfrage was wäre da richtig Anfüge- oder Aktualisierung?
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 07, 2020, 17:36:28
ZitatIch stellte dann fest, dass die Daten nicht alle angezeigt werden und auch teilweise in den falschen Feldern erscheinen.
Da müsste man vor dem Code-Weiterschreiben einen Denkvorgang vorschalten und dafür die Würfel wegwerfen:
ia = UBound(sArr)
Debug.print ia

Was soll einem die Variable ia sagen? Wie wäre sie also in der Folge zu verwenden/auszuwerten?
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 07, 2020, 19:53:51
@ ebs17
Liege ich mit meiner Vermutung richtig, dass du mich auf Debug.Print aufmerksam machen wolltest?
ZitatDa müsste man vor dem Code-Weiterschreiben einen Denkvorgang vorschalten und dafür die Würfel wegwerfen:
Dann erklär mir doch bitte wie der aussehen soll, was hat das mit den Würfel wegwerfen zu tun?
Im verwendeten Code kommt niregends Debug-Print vor. Oder ich sehe es nicht.
Private Sub Text16_AfterUpdate()
' da jetzt ein gebundenes Formular zum Einsatz kommt, muss darauf geachtet werden,
'dass nur neue DS erfasst werden. Ein bestehender DS würde sonst überschrieben.
    If Me.NewRecord Then
        ansatz_trennen (Me.Text16)
    End If
End Sub

Sub ansatz_trennen(cQR As String)
' Steht auch im Formularmodul. Falls du das später evtl. auch an anderer
' Stelle benötigst müsste die Prozedur in ein allgem. Modul verlagert und
' entsprechend angepasst werden (Formularbezug Me.)
    Dim sArr() As String
    Dim ia As Long

    sArr = Split(cQR, "_")
    ia = UBound(sArr)

    ' Das Schreiben kann von Formulartextfeld zu Formulartextfeldern erfolgen
    ' ist hier umgesetzt in gebundenem Formular
    ' oder auch aus einem Recordsetfeld in weitere Recordsetfelder
    With Me
        .txtProjektNr1 = Val(Split(sArr(0), ".")(0))
        .txtProjektNr2 = Val(Split(sArr(0), ".")(1))
        .txtID1 = Val(sArr(1))
        Select Case ia
        Case 4
            .txtKurzzeichen = sArr(2)
            .txtOrt = sArr(3)
        Case 5
            .txtID2 = Val(sArr(2))
            .txtKurzzeichen = sArr(3)
            .txtOrt = sArr(4)
        End Select
' Aktualisierung einer Anzeige aller Scans (siehe unten)
        ' mit einem UFo
        '.NameUFoControl.Form.Requery
        ' mit einem Listfeld
         .Liste50.Requery
    End With
End Sub

Meines Erachtens sagt die Variable aus, welche Felder definiert sind? Lasse mich gern belehren.
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 07, 2020, 20:55:35
ZitatMeines Erachtens ...
Die Bedeutung von Anweisungen sollte man nicht erachten, sondern bei Unwissen oder Zweifel in der Hilfe nachschlagen. UBound gibt die Anzahl der Array-Elemente, die durch Split entstehen, 0-basiert wieder.

05400.400_0005_0012_ABCD_Musterstadt
0         1    2    3    4

Das ist nach Wissen der längstmögliche Ausdruck. UBound kann also maximal 4 sein. Die Variable nimmt diesen Wert auf, damit er nur einmal ermittelt werden muss trotz doppelter Verwendung.

ZitatIm verwendeten Code kommt niregends Debug-Print vor
Nun, das würde man kurzfristig mal einfügen, um sich ansehen zu können, was ungeachtet des Erachtens und Denkens real für ein Wert geliefert wird. Entwickler machen so etwas, also prüfen, womit man es wirklich zu tun hat.

Eine nachfolgende Prüfung auf 5 im Select Case bei maximal möglich 4 hat dann andere als erwartete Wirkungen (die kann man im Code auch nachvollziehen), und die 5 entstammt nicht einer nachvollziehbaren Logik, sondern einer zufälligen "Eingebung", was die Würfel versinnlichen sollen.

Für mich war das jetzt genügend Volksschule bei zu wenig Sichtbarkeit  von eigener Initiative und von Fortschritt.
Ich wünsche viel Erfolg auf dem Weg.
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: Beaker s.a. am April 08, 2020, 13:05:54
Hallo Eberhard,
ZitatEine nachfolgende Prüfung auf 5 im Select Case bei maximal möglich 4
Das war aber mein Fehler; peinlich immer diese Aussetzer.

@walker950
Mit Eberhards deutlicher Erläuterung solltest du den Code aber anpassen können.

gruss ekkehard
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 08, 2020, 14:24:17
Hallo ekkehard
ZitatMit Eberhards deutlicher Erläuterung solltest du den Code aber anpassen können.
Ich werde es versuchen, will das ja auch verstehen.
Gruss
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 09, 2020, 17:05:10
Hallo zusammen
@ekkehard
ZitatMit Eberhards deutlicher Erläuterung solltest du den Code aber anpassen können.
Habes zu Stande gebracht. Wenn es maximal 4 sein können, dann ist die 5 nicht korrekt.
Case 4 angepasst zu Case 3
Case 5 angepasst zu Case 4


Für die Zukunft nehme ich mit, Funktion markieren und F1 drücken hilft einem schon viel weiter. Wenn es dann immer noch unklar ist fragen.
Die nächsten Fragen kommen bestimmt....
Allen die Hilfestellung gegeben haben ein herzliches Dankeschön und schöne Ostern.
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 09, 2020, 20:51:18
Case 4 angepasst zu Case 3
Ich fand den Code für das verwendete Beispiel stimmig. Offen blieben dagegen  andere Beispiele.
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 09, 2020, 21:10:29
Guten Abend Eberhard

Kurze Nachfrage, wie hättest du es gelöst? Gibts es noch einen anderen Weg?
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: ebs17 am April 10, 2020, 08:51:27
Genau gesagt hatte ich noch die Case 4-Variante aus meinem Ansatz im Kopf, und dann die Umsetzung nicht mehr wirklich angesehen wegen dieser 5.

Entscheidend ist doch der Praxistest an realen Werten, und weniger was sich der eine oder andere noch so denkt.

Wie auch: Bei Ansätzen und Vorschlägen, die ja vor allem eine Idee transportieren, darf man nicht zwingend davon ausgehen, dass da alles bis auf den letzten Punkt superrichtig ist. Wenn man drei, vier Dinge zusammenbaut, dann regelmäßig noch abstrakt, also allein aus der Vorstellung heraus und ohne explizites Testen, dann ist es schnell möglich, dass eine fünfte Sache fehlerhaft ankommt.
Der Nachfragende darf solche kleinen Dinge gerne selber bereinigen, das zeugt dann auch von einem Mitdenken und Verstehen gegenüber einem gedankenlosen bloßen Kopierens.
Es könnte sogar sein, dass da eine "Sollbruchstelle" eingefügt wurde zum Test, ob die Gegenseite wach ist oder schläft.

ZitatGibts es noch einen anderen Weg?
Ja, sogar ganz anders. Die ursprüngliche Idee der Verwendung von RegEx war schon eine praktikable. Bei den nunmehr nur zwei übersichtlichen QRCode-Varianten wäre sie sehr gut gangbar, ich hatte aber ursprünglich mit mehr Varianten und mehr Varianz darin gerechnet, und dann wäre es recht komplex geworden. Da ist das Trennen per Split doch ein ganz einfacher Fall und besser pflegbar, wenn die Herausforderungen steigen.
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 13, 2020, 11:19:18
Guten Tag zusammen
Eine Frage zu den Formularen.
Ich erstelle ein Hauptformular mit allen Feldern aus der Tabelle, zusätzlich ein ungebundenes Feld um den QR Code zu scannen. Dort sehe ich dann was gescannt wurde und ergänze die anderen Information manuell.
Das UFO erstelle ich in dem Hauptformular mit den gleichen Feldern, dies dient der Übersicht alle DS. Nun meine Frage kann ich das auch in den Formularfuss einfügen oder muss das im Hauptformular sein?
Müssen die Felder vom Hauptformular mit dem UFO verknüpft werden?
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: DF6GL am April 13, 2020, 12:34:15
Hallo,

bzgl. HFO/UFO:

vielleicht solltest Du für eine solche Vorgabe ein "Geteiltes Formular" einsetzen...

Ein UFO an die gleiche Tabelle wie das HFO zu binden, kann schnell zu Sperrkonflikten führen, wenn man keine anderweitigen Vorsichtsmaßnahmen ergreift.

Als Übersichtsanzeige wäre vermutlich ein Listenfeld auch (besser) geeignet.

"Verknüpft" werden ist nur dann erforderlich, wenn das UFO den/die Datensätze anzeigen soll, die durch die Verknüpfungsfelder (Primär-/Fremdschlüssel) definiert sind.
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 13, 2020, 13:22:10
Hallo DF6GL
Danke für deinen Hinweis.
In meinem Beispiel ist vermutlich sowas wie Speerkonflikt passiert. Im ufo Test sollten eigentlich alle DS angezeigt werden, jedoch funktioniert das auf einmal nicht mehr.
Das ufo würde mir insoweit bessere Gestaltung Möglichkeiten bringen siehe Beispiel. Finde den Fehler einfach nicht raus an was es liegt.
Zitatwenn man keine anderweitigen Vorsichtsmaßnahmen ergreift.
Wie könnten diese Massnahmen aussehen?
Grüsse
walker950
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: DF6GL am April 13, 2020, 13:43:25
Hallo,

Zitatjedoch funktioniert das auf einmal nicht mehr.

Entferne die Einträge in den UFO-Steuerelement-Eigenschaften "Verknüpfen von/nach"    ("ID")
Titel: Re: Left, Regex, Tabellen vergleichen
Beitrag von: walker950 am April 13, 2020, 14:09:34
Hallo
super vielen Dank.