collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 51
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13947
  • stats Beiträge insgesamt: 66274
  • stats Themen insgesamt: 8933
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Abfrage mit Sonderzeichen  (Gelesen 2119 mal)

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 178
Abfrage mit Sonderzeichen
« am: Januar 03, 2018, 00:54:56 »
Hallo zusammen,
Ich habe eine riesige Ersatzteilliste von vielen Herstellern, einige Bestellnummern haben Sonderzeichen z.B. "/ ", (die Sonderzeichen sind nicht immer an der gleichen Stelle). Bei der Abfrage erscheinen diese nicht. Habe gelesen das man Sonderzeichen vermeiden sollte aber ich kann die Listen nicht bearbeiten und wenn ja würde die geänderte Nummer nicht den "Originale" entsprechen. Hat da einer eine Lösung oder einen Weg für mich.
Beispiel: 568925/N   Oder 3354/S

Mfg. Udo
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1223
Re: Abfrage mit Sonderzeichen
« Antwort #1 am: Januar 03, 2018, 05:07:13 »
In Textfeldinhalten tun Sonderzeichen nicht weh und gehören in Deinem Beispiel auch genauso, wie es der Hersteller vorgibt, dort hin. Man kann allerhöchstens abweichende Formatierungen, die den Inhalt nicht ändern, vornehmen, um ein gleiches bzw. ähnliches Aussehen über alle Datensätze zu erzielen. Der einer Hersteller mag eine Nummer mit 4711 / A angeben, während ein anderer 4712/X schreibt. Hier würde ich vermutlich die Leerzeichen vor und nach dem Schrägstrich bei 4711 entfernen, was den Inhalt jedoch nicht verfremdet.

Bei Telefonnummern würde ich auch eine Normierung vornehmen und mich auf eine einheitlich Schreibweise festlegen.

Bei Objektnamen hingegen (wie z. Bsp. in Feld-, Tabellen-, Steuerelement-, Abfrage-, usw-Name) sind Sonder- und Leerzeichen weniger schick und einige davon auch gar nicht zulässig (z. Bsp. der Punkt).
Grüße von der (⌒▽⌒)
 

Offline Joss

  • Access-User
  • *
  • Beiträge: 80
Re: Abfrage mit Sonderzeichen
« Antwort #2 am: Januar 03, 2018, 13:42:24 »
Hallo Udo,

Zitat
Ich habe eine riesige Ersatzteilliste von vielen Herstellern
Ist die Liste eine Tabelle in der Access-Datenbank?

Zitat
Bei der Abfrage erscheinen diese nicht.
Ist mit "Abfrage" eine Access-Abfrage gemeint?

Ansonsten siehe Zitat Lachtaube:
Zitat
In Textfeldinhalten tun Sonderzeichen nicht weh

Gruß
Josef
Meine Suchmaschine: www.fireball.de | Access-Wiki: www.dbwiki.de
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 178
Re: Abfrage mit Sonderzeichen
« Antwort #3 am: Januar 03, 2018, 22:58:16 »
Hallo zusammen.
Ich habe insgesamt 177824 Artikel und diese einzeln zu prüfen und "leicht" zu korrigieren ist sehr viel Arbeit und dazu kommt noch das jährlich die Artikel neu aufgespielt werden, da sich die VK Preise ändern.
Die Artikel liegen natürlich in einer Tabelle, die durch eine MS Abfrage abgefragt werden. Über ein Kombifeld mit Automatisch ergänzen, bei Eingabe über VBA klappt das Kombifeld mit Dropdown auf.
Beispiel: Probleme mit Artikelnummer
602052/B
602052/B/K
602052/B/K/L
602052/B/K/L/R
602052/B/L

es wird dann nur die erste 602052/B angezeigt.
Wenn ich andere Nummern ohne / aufrufe werden mir die richtig angezeigt.
Ich vermute dass ich mir Probleme mit dem Automatischen ergänzen mache.
Mfg. Udo
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7258
Re: Abfrage mit Sonderzeichen
« Antwort #4 am: Januar 03, 2018, 23:26:43 »
Hallo,
ein Kombifeld kann nur maximal ca.65000 Datensätze anzeigen.
Das ist deutlich weniger als die 177824 DS.
Gruß
Klaus
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 178
Re: Abfrage mit Sonderzeichen
« Antwort #5 am: Januar 03, 2018, 23:45:50 »
Hallo Klaus,
hmmm, das ist die Erklärung dazu. Habe es gerade noch nachgelesen aber wie kann ich das umgehen?
Mfg. Udo
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7258
Re: Abfrage mit Sonderzeichen
« Antwort #6 am: Januar 04, 2018, 00:35:15 »
Hallo,
Zitat
aber wie kann ich das umgehen?
Gar nicht, Du kannst das Kombifeld filtern und nur einen Teil der Daten anzeigen.
Am einfachsten ist, wenn Du ein Formular als Endlosformular nimmst. Da musst Du aber das automatische Ergänzen programmieren.
Gruß
Klaus
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1223
Re: Abfrage mit Sonderzeichen
« Antwort #7 am: Januar 04, 2018, 05:43:28 »
Eine Möglichkeit besteht darin, das Kombifeld erst nach der Eingabe von einigen Zeichen mit Zeilen zu versorgen. Allen Brownes Combos with Tens of Thousands of Records erklärt schrittweise die Anwendung in der Praxis und bietet zudem ein Beispiel zum Download an, welches die Umsetzung für australische Postleitzahlen enthält.

Hier die in's deutsche übersetzte Beschreibung.
Zitat
Kombis mit Zehntausenden von Datensätzen

Kombis werden mit vielen Tausenden von Datensätzen unbrauchbar, sogar mit vielen Hundert in Access 2. Indem Sie Datensätze erst dann in die Combo laden, wenn der Benutzer die ersten drei oder vier Zeichen eingegeben hat, können Sie Kombis weit über ihre normalen Grenzen hinaus verwenden, selbst wenn die AutoExpand-Eigenschaft eingeschaltet ist.

Das ist die Idee:

    Lassen Sie die RowSource-Eigenschaft der Kombination leer.
    Erstellen Sie eine Funktion, die die RowSource zuweist, nachdem eine Mindestanzahl von Zeichen eingegeben wurde. Nur Einträge, die diesen Anfangsbuchstaben entsprechen, werden geladen, so dass die RowSource der Combo nie mehr als ein paar hundert Datensätze enthält.
    Rufen Sie diese Funktion im Change-Ereignis der Kombination und im Current-Ereignis des Formulars auf.


Übersetzt mit www.DeepL.com/Translator
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: Icemann1970

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 178
Re: Abfrage mit Sonderzeichen
« Antwort #8 am: Januar 04, 2018, 20:36:40 »
Hallo Lachtaube, vielen Dank für den Tipp. Ich versuche das mal umzusetzen. Werde Rückmeldung geben. Haltet mir die Daumen. 8)
Mfg. Udo
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 178
Re: Abfrage mit Sonderzeichen
« Antwort #9 am: Januar 05, 2018, 20:38:53 »
Hallo Lachtaube, ich habe den Code (aus deinem Link) versucht bei mir einzusetzen aber irgendwie .......
Die Daten liegen in der Tabelle "MatrialDaten" das Kombifeld heißt "cbxArtikel" und der Steuerelementinhalt heißt "Artikel".
Dim sArtikelStub As String
Const conArtikelMin = 3
Function ReloadArtikel(sArtikel As String)
    Dim sNewStub As String   
    sNewStub = Nz(Left(sArtikel, conArtikelMin),"")
     If sNewStub <> sArtikelStub Then
        If Len(sNewStub) < conArtikelMin Then
            'Remove the RowSource
            Me.[MaterialDaten].RowSource = "SELECT Artikel FROM [MaterialDaten] WHERE (False);"
            sArtikelStub = ""
    End If
End Function
den folgenden Code habe ich im Kombifeld "Bei Änderung" eingetragen.
    Call ReloadArtikel(Nz(Me.[MaterialDaten], ""))
Step 3 macht für meine zwecke keinen Sinn, wenn ALLE Bestellnummern z.B.: mit 000 anfangen würden ja aber dies ist nicht der Fall.
Step 4 brauche ich nicht da Ich nur eine Zeile also keine "Column()" brauche, ein zweites Abhängiges Kombinationsfeld, kannst du mir sagen wo ich da den Fehler habe?

Mfg. Udo
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1223
Re: Abfrage mit Sonderzeichen
« Antwort #10 am: Januar 05, 2018, 20:58:52 »
... und was ist aus 'New RowSource geworden?
Grüße von der (⌒▽⌒)
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 178
Re: Abfrage mit Sonderzeichen
« Antwort #11 am: Januar 05, 2018, 21:59:52 »
Hmmmm, ich stehe auf´m Schlauch...
Wenn die RowSourceType RowSourceType-Eigenschaft auf eine benutzerdefinierte Funktion festgelegt wird, kann die RowSource RowSource-Eigenschaft doch leer bleiben.
Ich habe im Eigenschaftsblatt die Datensatzherkunft SELECT [MaterialDaten].Artikel, [MaterialDaten].Hersteller, [MaterialDaten].Bezeichnung, [MaterialDaten].ID FROM [MaterialDaten]; und den Herkunftstyp "Tabelle/Abfrage"gelassen
Mfg. Udo
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1223
Re: Abfrage mit Sonderzeichen
« Antwort #12 am: Januar 06, 2018, 05:03:20 »
Das sollte mindestens im Formularmodul verankert sein. (Die Variablen-/Konstantenamen habe ich eingedeutscht, damit das Verstehen leichter fällt.)
Option Explicit

' =============================================================================
Private ArtikelKontrollSegment As String
' =============================================================================
Private Const conArtikelMindestLaenge = 3  ' Länge an Gegebenheit anpassen.
' =============================================================================


' =============================================================================
Private Sub cbxArtikel_Change()
   Call ArtikelNachladen(Me.cbxArtikel.Text)
End Sub
' =============================================================================

' =============================================================================
Private Sub cbxArtikel_AfterUpdate()
   'Mach' ggf. etwas mit der Auswahl
End Sub
' =============================================================================


' =============================================================================
Private Sub ArtikelNachladen(ByVal ArtikelNummer As String)
   
   Dim NeuesKontrollSegment As String  ' Erste Zeichen von cbxArtikel.Text
   
   Const RowSourceStumpf As String = _
         "SELECT Artikel FROM MaterialDaten WHERE "

   NeuesKontrollSegment = Left$(ArtikelNummer, conArtikelMindestLaenge)
   
   ' Haben sich die ersten Zeichen geändert?
   If StrComp(NeuesKontrollSegment, ArtikelKontrollSegment, _
              vbTextCompare) <> 0 Then
             
      ' Die Mindestlänge wurde noch nicht erreicht.
      If Len(NeuesKontrollSegment) < conArtikelMindestLaenge Then
     
         ' entferne die Datensatzherkunft
         'Me.cbxArtikel.RowSource = RowSourceStumpf & "False;"
         
         ' (kürzer - mit dem selben Effekt)
         Me.cbxArtikel.RowSource = vbNullString
         
         ' ArtikelKontrollSegment löschen
         ArtikelKontrollSegment = vbNullString
     
      Else  ' Neue Datensatzherkunft zuweisen
         
         ' Damit die Methode bei Eingabe eines ' nicht in die Knie geht.
         ArtikelNummer = Replace(ArtikelNummer, "'", "''")
         
         Me.cbxArtikel.RowSource = RowSourceStumpf & _
                                   "Artikel Like '" & ArtikelNummer & "*' " & _
                                   "ORDER BY 1;"
         
         ' ArtikelKontrollSegment merken
         ArtikelKontrollSegment = NeuesKontrollSegment
      End If
   End If
End Sub
' =============================================================================
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: Icemann1970

Offline Frithjiof

  • Access-User
  • *
  • Beiträge: 74
Re: Abfrage mit Sonderzeichen
« Antwort #13 am: Januar 06, 2018, 12:42:26 »
Hallo Udo,

ich habe dir ein kleines Beispiel gebastelt um zu zeigen wie das Problem in den Griff zu bekommen ist.

"frmTest" aufrufen.
Im Eingabefeld über der Liste den Suchstring eingeben. Die Liste wird während Eingabe gefiltert.
Im Optionsfeld über dem Eingabefeld kann die Suchart festgelegt werden.

Die Ausgabe im Listenfeld ist gegenwärtig auf ca. 100 Zeilen beschränkt.
(mit SELECT TOP 100 tblTest.* FROM tblTest; )

Die Suche kann leicht auch auf andere Felder z.B. die Artikelbeschreibung ausgedehnt werden.

Frithjof
 
Folgende Mitglieder bedankten sich: Icemann1970

Offline Domm

  • Access-User
  • *
  • Beiträge: 96
Re: Abfrage mit Sonderzeichen
« Antwort #14 am: Januar 06, 2018, 17:42:30 »
Das ist wirklich genial!
Gruß Domm