Eine Tabelle hat mehr wie die 65000 Zeichen. Daher werden nicht alle Artikel angezeigt. Nun habe ich versucht durch eine Vorauswahl des ersten Zeichens die Auswahl einzuschränken, es klappt aber nicht.
Im Formular Kombinatsonsfeld bei Taste auf Feld "STeile-Nr":
With Me![STeile-Nr]
If Len(.Text) = 1 Then
.RowSource = "SELECT Id, [Teile-Nr]" _
& " FROM Artikel" _
& " WHERE Left([STeile-Nr.],1) = '" & .Text & "'"
.Dropdown
End If
End With
Hallo,
vermutlich meinst Du: Eine Tabelle enthält mehr als xxx Datensätze...
Benutz besser das Kombifeld-Ereignis "Bei Änderung" (Change )
Alternativ käme eine "abhängige Kombifelder"-Konstruktion in Betracht.
http://www.donkarl.com/?FAQ4.36
Weiterhin dringend angeraten: Sonder- und Leerzeichen in Objektnamen vermeiden!
Ja ich meine natürlich eine Tabelle mit mehr als 65.000 Zeichen.
"Change" hat nichts gebracht.
"Abhänige Kombifelder" entfallen im Augenblick als Lösung.
Hallo,
Also ich würde auch das Change-Ereignis verwenden, und
es dann so formulieren (ungetestet)
With Me![STeile-Nr]
If Len(.Text) > 0 Then
.RowSource = "SELECT Id, [Teile-Nr]" _
& " FROM Artikel" _
& " WHERE [Teile-Nr] LIKE '" & .Text & "*'"
.Dropdown
End If
End With
So wird das Standardverhalten von Kombis nochmal nach-
gestellt; - es wird also nach jedem weiteren Zeichen die Aus-
wahl eingeschränkt.
hth
gruss ekkehard
??? Hat so lieder nicht geklappt. Es wird in der Auswahl nichts angezeigt.
:) Weiss jemand eine Lösung?
Hi ?,
Frage 1: Meinst Du Zeichen oder Datensätze (Deine Aussage zu Tabelle mit mehr als 65000 Zeichen)?
Frage 2: Funktioniert Deine Abfrage mit weniger Zeichen bzw. Datensätzen?
Frage 3: Kannst Du die Datenbank in komprimierter und gezippter Form als access2003-Datei hier zur Verfügung stellen?
Harald
Hallo RKSR...,
ich habe bei einem ähnlichen Problem eine andere Lösung gestaltet. Ein Arzt muss eine Indikation aus einem Riesen ICD-Schlüssel (das sind die verschlüsselten Indikationen) auswählen.
Diese sind so gestaltet, dass mit einer Buchstaben-Zahl Kombination die verschiedenen Indikatioinen verschlüsselt werden (A43.0 Pulmonale Nokardiose; S36.18 Verletzung: Gallengang)
Zur Auswahl habe ich ein Kombinationsfeld: Gruppe u. ein Listenfeld: Indikationen gestaltet. Im ungebundenen Kombiffeld konnte mit:
SELECT Gruppe, Gruppenname FROM SchlüsselGruppen;
zunächst eine Indikationsgruppe ausgewählt werden. Die Tabelle Schlüsselgruppe enthält A--> Indikationsgruppe1, B--> Indikationsgruppe3 usw...
Mit dem Ereignis: "Nach Aktualisierung" des Kombifeldes:
Private Sub Gruppe_AfterUpdate()
Me!Indikationen.RowSource = "SELECT * FROM SchlüsselIndikation WHERE ICD Like " & "'" & (Me!Gruppe) & "*'" & " ORDER BY SchlüsselIndikation.ICD"
End Sub
wird das Listefeld gefüllt uund zwar mit allen Indikationen der ausgewählten Gruppe aus der Tabelle Schlüsselindikationen.
Nun konnte im 2. Schritt im Listenfeld aus einer viel kleineren Anzahl von Indikationen im Listenfeld ausgewählt werden.
Musst mal prüfen, ob dieses Prinzip auch für Dich anwendbar ist.
Gruß Oma
Leider ist die Datei zu groß zum hochladen hier - 7MB. An diesem Beispiel kann man gut erkennen, dass die Auswahl bei 65535 Zeichen endet.
Andere Möglichkeit für die Datei?
So schaut es nun aus:
With Me![Einzelteil-Nr]
If Len(.Text) > 0 Then
.RowSource = "SELECT Id, [Teile-Nr]" _
& " FROM Artikel_Test" _
& " WHERE [Teile-Nr.] LIKE '" & .Text & "*'"
.Dropdown
End If
End With
Hallo,
ZitatFrage 1: Meinst Du Zeichen oder Datensätze (Deine Aussage zu Tabelle mit mehr als 65000 Zeichen)?
Was ist nun Sache?
Fall 1: Willst Du (viele) Zeichen (Buchstaben, Ziffern, etc) in EINER Spalte (Feld) des Kombifeldes anzeigen
oder
Fall2 : Willst Du (viele) Datensätze (Tabellenzeilen) in der Kombifeldliste haben?
Wenn Du Fall 1 hast, dann kann ein Kombifeld grundsätzlich nicht mehr Zeichen in einer Spalte (Feld) anzeigen.
Wenn Du Fall 2 , dann könnte die Änderung der Einstellung unter "Optionen/Bearbeiten/Keine Listen..." helfen.
Insgesamt (im Fall 2) ist es sinnvoll, die Anzahl Datensätze (wie gezeigt) drastisch einzuschränken.
Standarddatenherkunft vor Sucheingabe:
SELECT Id, [Teile-Nr] FROM Artikel_Test WHERE 1 = 0
Damit ist die Datenherkunft leer aber schlank und damit "darstellbar".
Erst nach einer bestimmten Anzahl von eingegebenen Zeichen und damit nach einer wirkungsvollen Datenmengenbegrenzung würde man die Datenherkunft scharf schalten - auch in 65.000 Zeilen würde ich eher nicht blättern wollen ...
With Me![Einzelteil-Nr]
If Len(.Text) > 3 Then
.RowSource = "SELECT Id, [Teile-Nr]" _
& " FROM Artikel_Test" _
& " WHERE [Teile-Nr.] LIKE '" & .Text & "*'"
.Dropdown
End If
End With
Aber gerade bei vielen Einzelteilen dürfte es in der Nummerierung eine Systematik geben, so dass man schnell zu einer getrennten Speicherung von atomaren Informationen aus dieser Nummerierung und damit zu abhängigen Kombifeldern kommen kann.
MfGA
ebs
;D Zu den Fragen von Franz:
Fall 1: Willst Du (viele) Zeichen (Buchstaben, Ziffern, etc) in EINER Spalte (Feld) des Kombifeldes anzeigen --> 40 Zeichen
Fall2 : Willst Du (viele) Datensätze (Tabellenzeilen) in der Kombifeldliste haben? --> Anzahl ist größer 65535 Datensätze aus der Tabelle Artikel_Test
Insgesamt (im Fall 2) ist es sinnvoll, die Anzahl Datensätze (wie gezeigt) drastisch einzuschränken. --> Ja das möchte ich mit der Vorauswahl erreichen!
Vorschlag ebs17 integriert
Private Sub Einzelteil_Nr_Change()
With Me![Einzelteil-Nr]
If Len(.Text) > 1 Then
.RowSource = "SELECT Id, [Teile-Nr]" _
& " FROM Artikel_Test" _
& " WHERE [Teile-Nr.] LIKE '" & .Text & "*'"
.Dropdown
End If
End With
End Sub
Private Sub Einzelteil_Nr_AfterUpdate()
Me![Einzelteil-Nr].RowSource = "SELECT Id,[Teile-Nr] FROM Artikel_Test WHERE 1 = 0"
End Sub
:-[ Es werden keine Daten im Kombifeld "Einzelteil-Nr" angezeigt, siehe Anlage.
[Anhang gelöscht durch Administrator]
Hallo,
Private Sub Einzelteil_Nr_Change()
With Me![Einzelteil-Nr]
If Len(.Text) > 1 Then ' hier steht 3 bei ebs17, eben, um die DS dieffenzierter/drastischer einzuschränken...
.RowSource = "SELECT Id, [Teile-Nr]"
& " FROM Artikel_Test" _
& " WHERE [Teile-Nr.] LIKE '" & .Text & "*'"
.Dropdown
End If
End With
End Sub
Private Sub Einzelteil_Nr_AfterUpdate()
Me![Einzelteil-Nr].RowSource = "SELECT Id,[Teile-Nr] FROM Artikel_Test WHERE 1 = 0"
End Sub
Was soll das? Natürlich werden dann keine DS (mehr) angezeigt , weil diese Where-Condition WHERE 1 = 0 genau dafür sorgt....
:o Wie könnte es aussehen, dass was angezeigt wird. Gebe jetzt ja Zeichen vor, kommt trotzdem nichts .... :'(
HAllo,
lad doch mal Deine DB hier hoch, gezippt und datenreduziert....
Sonst kommen wir nie zum Ende..
:) Alles reduziert, es bleiben aber immer noch 4,5 MB. Hier kann ich das so nicht hochladen! Idee??? ???
Zur Überlegung: AfterUpdate kommt
nach den Änderungen bei der Eingabe (Change-Event).
Ich schrieb: Standarddatenherkunft
vor SucheingabeIf Len(.Text) > 1 Then ' hier steht 3 bei ebs17, eben, um die DS differenzierter/drastischer einzuschränken...
... richtig erkannt. Und als Ergänzung: Falls das keine Spaßdatenbank ist und da wirklich viele Datensätze drin liegen, die womöglich noch über ein Netzwerk geholt müssen, ist dieses Abfragefeuerwerk eine enorme Belastung, die kostet. Daher würde man sich das Recordset einmalig holen:
If Len(.Text) = 3 Then ...
Der eingebende User hat sicher mehr davon, wenn er bei der Eingabe die Eigenschaft "Automatisch ergänzen" nutzen kann.
//Edit:
ZitatIdee???
Kennst Du Komprimieren?
MfGA
ebs
;) Danke für die Infos, bisher bei dieser Menge im Netzwerk keine Probleme.
Wo soll "Standarddatenherkunft" hin?
Komprimieren kenne ich, um relistische Daten zu haben bin ich bei 4,5 MB. Habe soviel ich konnte abgespeckt. :-\
mfg
RKSRinfo
Hallo,
schick mir das Ding per Email...
zu finden im Link bei "Hilfestellung"
ZitatWo soll "Standarddatenherkunft" hin?
Das nimmst Du jetzt wortwörtlich?
Die Abfrage setzt Du in die Eigenschaft "Datenherkunft (RowSource)" des Kombifeldes im Formularentwurf. Damit ist der Zustand bei Neuöffnen des Formulars geklärt.
Zusätzlich solltest Du, wenn Du mehrere Suchvorgänge nacheinander ausführst, nach Ende eines abgeschlossenen Vorgangs oder zu Beginn eines neuen Suchvorgangs das Recordset wieder auf leer setzen.
MfGA
ebs
Hi
im Formular1 auf den Button drücken => es werden > 65536 Datensätze angelegt.
Formular2. Im Kombifeld wird eine Liste mit mehr als 65536 Datensätzen aufgemacht (dauert halt etwas)
Harald
[Anhang gelöscht durch Administrator]
Hallo df6gl,
wollte die Mail senden - unzustellbar -->
'df6gl@gmx.de' am 02.10.2012 17:38
554 Mail size limit exceeded.
mfg
RKSrinfo
Hallo,
hast Du das Ding gezippt, bzw. als rar-Archiv komprimiert?
Hi,
wie lautet die Antwort auf
Frage 2: Funktioniert Deine Abfrage mit weniger Zeichen bzw. Datensätzen? aus dem 5.ten Beitrag?
Der Hintergrund ist: Wenn das Problem auch bei weniger als 65536 Daten auftritt, reicht es aus, eine Datenbank mit wenigen Datensätzen zur Verfügung zu stellen. Es ist in diesem Fall leicht vorstellbar, dass zumindestens die Schwierigkeiten wegen der Größe der Datenbank beim Bereitstellen hier im Forum bzw. beim Versenden in einer Email beseitigt sind.
Welches Ergebnis / welchen Kommentar hast Du zu meinem Beitrag vom Oktober 02, 2012, 16:41:52?
Harald
Zitatwelchen Kommentar hast Du zu meinem Beitrag
Neben dem Aspekt, dass etwas "geht", sollte man auch im Blick haben, ob es angemessen und sinnvoll ist, Stichworte: Bedienfreundlichkeit, Performance.
- Wer möchte sich durch 65.000 Datensätze durchblättern?
- "dauert halt etwas": Fühlt man sich eingeschränkt, wenn ein oder mehrere solcher Kombifelder am Wirken sind?
MfGA
ebs
Franz hat eine Lösung die in 2 Schritten funktioniert:
Private Sub Einzelteil_Nr_AfterUpdate()
Me![Einzelteil-Nr].RowSource = "SELECT [Teile-Nr], Artikelname, Artikelzusatz FROM tblArtikel order by [Teile-Nr]"
End Sub
Private Sub Suchtext_AfterUpdate()
Me![Einzelteil-Nr].RowSource = "SELECT [Teile-Nr], Artikelname, Artikelzusatz " & _
" FROM tblArtikel Where [Teile-Nr] Like '" & Me!Suchtext & "*'"
Me![Einzelteil-Nr].SetFocus
Me![Einzelteil-Nr].Dropdown
End Sub
Danke an alle! 8)
Zitat von: RKSRInfo am September 24, 2012, 09:39:04
Eine Tabelle hat mehr wie die 65000 Zeichen. Daher werden nicht alle Artikel angezeigt. Nun habe ich versucht durch eine Vorauswahl des ersten Zeichens die Auswahl einzuschränken, es klappt aber nicht.
Im Formular Kombinatsonsfeld bei Taste auf Feld "STeile-Nr":
With Me![STeile-Nr]
If Len(.Text) = 1 Then
.RowSource = "SELECT Id, [Teile-Nr]" _
& " FROM Artikel" _
& " WHERE Left([STeile-Nr.],1) = '" & .Text & "'"
.Dropdown
End If
End With