Office: (Office 2003) Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist

Helfe beim Thema Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, Hab ein Access endlosformular. Dort würde ich gerne in einem (ungebundenen?) Textfeld anzeigen, ob in einer Excel Datei in der Spalte B:B ein... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von boonsi1980, 21. April 2010.

  1. Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist


    Hallo,

    Hab ein Access endlosformular.
    Dort würde ich gerne in einem (ungebundenen?) Textfeld anzeigen, ob in einer
    Excel Datei in der Spalte B:B ein bestimmter Wert vorhanden ist.
    Und dann in diesem Feld reinschreiben, "Vorhanden" / "Nicht vorhanden"

    Bin mir aber nicht sicher, wie das geht.
    Geht das über verknüpfte Tabellen oder eher per VBA und Schleifen, um die Spalte zu überprüfen?

    Edit:
    Ich bin im Mom. grad am verknüpfen und gucken, ob das dann geht.
    Problem ist aber. Die Spalte B enthält zahlen und Text. Formatiert ist die ganze Spalte als Text.
    Access macht beim Verknüpfen aber anscheinend "Zahl" draus.
    Alle Zahlen, die ich in der Excel Datei habe, erscheinen als zahlen, und die Texte erscheinen als #zahl

    :)
     
    boonsi1980, 21. April 2010
    #1
  2. Schleifen kannst Du verwenden,
    - wenn Du es umständlich und relativ langsam magst
    - oder Deine Exceltabelle keine ordentliche Datentabelle ist.

    Verknüpfen und eine Abfrage oder, wenn das die einzige Aktion auf die Exceltabelle ist, ein Zugriff direkt über SQL/ISAM wären geeignete Mittel.
    Code:
    Eine solche Information erscheint mir aber wie ein Zwischenergebnis innerhalb einer Prozedur und wäre eingearbeitet in diese sicher besser aufgehoben.
     
  3. Danke für die hilfe.

    Irgendwo tu ich mich schwer.
    Vorher gings mal, da wurde mir allerdings alles mit Vorhanden angezeigt.
    Hab dann irgendwas probiert, dann gings nicht mehr.
    Hab die alte Version nochmal hervorgeholt, zum nochmals frisch anfangen...
    bekomme jetzt allerdings die Meldung "Objekt erforderlich"

    Jetzt noch ein Verständnisproblem.
    Im Endlosform habe ich das Feld "Serial_Nr" dieses möchte ich gerne mit der Excel Spalte vergleichen. Dieses Feld hab ich ja nirgends drinnen, im VBA code.

    Hab das jetzt als importierte xls Datei
    Code:
    Debugger bleibt hier stehen, im DLookupSQL Modul
    Code:
    Ja, es ist sowas wie ein Zwischenergebnis.
    Ich habe hier meine AccessDB. und mit dieser schaue ich in einer "Minusliste" nach, ob Material fehlt. Wenn ja, zeig ich das dann in der DB an.

    Die "Minusliste" liegt zentral auf dem Server, und div. Mitarbeiter tragen dort ihr Fehlendes Material ein. Noch dazu aus verschiedenen Abteilungen etc.
    Eigentlich würde ich das lieber einarbeiten, wie du sagst. leider darf ich aber nicht. Die wollen ihre Excel Datei für das Fehlmaterial behalten *frown.gif*
     
    boonsi1980, 23. April 2010
    #3
  4. Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist

    Code:
    Lass mal das C weg, ein CurrentDbC müsste extra deklariert werden, vgl Performance in VBA+Formularen von Josef Pötzl.
    Was heißt das? Willst Du die Datensätze des Formulares (bzw. der dahinterliegenden Abfrage) mit denen der Exceltabelle abgleichen, d.h., beide Tabellen stehen in Beziehung?
    Der vorhandene Vorschlag erstellt eine Aussage über die gesamte Excel-Spalte. Wenn Du das ins Endlosformular legst, steht immer in jedem Feld das gleiche.
     
  5. In diesem Moment funktioniert's bei mir auch wieder.

    Hatte den DlookupSQL von einem anderen Post nochmals kopiert.
    Ja, ist mir jetzt auch erst aufgefallen, dass das allgemein gilt.

    Ja, die stehen in beziehung zueinander *frown.gif*

    Mein Endlosform hat ein Feld Serial_Nr.
    Diese Minusliste hat auch ein Feld Serial_Nr.

    Wenn jetzt also für eine Serial_Nr Material fehlt, wird dieses Material in der Excel Datei eingetragen.
    SpalteA= Welches Mat. Spalte B= Für Welche Serial_Nr

    So wollte ich jetzt in der AccDB prüfen, ob in der Excel Tabelle einen Eintrag mit der gleichen Serial_Nr vorhanden ist.

    Eigentlich würde ich diese Minusliste liebend gerne in die AccDB übernehmen. Aber eben, ich darf nicht :/
    Die Wollen par tout. Das in einer Excel Datei haben.

    ---
    Dafür bin ich jeden Tag Rahmen am nachziehen, Feldgrössen am zurücksetzen
    Schriftgrössen am korrigieren etc.

    Ich hatte das mal mit Blattschutz und Feldschutz versucht. Aber das scheiterte, wegen irgendwas. (ich erinner mich gerade nicht, wegen was genau)
     
    boonsi1980, 23. April 2010
    #5
  6. Könnte man alternativ die Spalte in ein Memofeld einlesen, und dann Pro Datensatz nach der Serial Nr. Suchen?

    Mit "like" oder so?

    Es sind nie mehr als ca. 100 Zeilen in der Spalte
     
    boonsi1980, 23. April 2010
    #6
  7. Dann sollte man doch aus der Datenherkunft Deines Endlosformulares und aus der Exceltabelle eine gemeinsame Abfrage erstellen und die als Datenherkunft des Formulars hernehmen - falls Deine Tabellen das hergeben.
    Falls Du dazu Hilfe benötigst, solltest Du diese zeigen.
     
  8. Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist

    Ach... wie blöd von mir, das sollte natürlich gehen.
    Ich veruch's mal auf diese Art.

    Habe mal das ganze auch mal in den Anhang gepackt. Als Verdeutlichung.
    Unterdessen hab ich's geschafft, die Exceldatei mit Autofilter abhängig vom markierten Datensatz über eine Schaltfläche zu öffnen.

    Der Schritt mit dem Prüfen, ob diese Serien Nr. war dazu gedacht, dass ich in der Access DB nich nochmals überprüfen muss, ob jetzt bei einem Komponent Material fehlt oder nicht.

    Also, ich probier das mal mit der Abfrage.

    Edit:
    Tatsächlich brauche ich Hilfe *frown.gif*
    Das Form besteht schon aus einer Abfrage. Wenn ich diese jetzt um das Vorher genannte Feld erweitere, bekomme ich alle Datensätze mehrfach angezeigt etc.
    Wie kann ich die beiden eigentlich sinnvoll verknüpfen, die Excel Tabelle hat ja keine eindeutige ID
     
    boonsi1980, 23. April 2010
    #8
  9. Hallo boonsi1980,

    mit den Bezeichnungen und der Logik komme ich noch nicht ganz klar. Daher in kleineren Schritten.
    Lege Dir eine solche Abfrage an:
    Code:
    Damit holst Du Dir die Exceltabelle ungefiltert als Abfrage in die Access-Anwendung herein. Pfad und unteres Tabellenende (farbig markiert) müssten sinnvoll angepasst werden. Die Feldnamenliste ist natürlich exceltypisch und nicht besonders schön geeignet - Umschließung mit jeweils eckigen Klammern ist notwendig. Sie lautet
    Diese Abfrage kannst Du nun mit Deiner Abfrage zu einer neuen Abfrage verknüpfen und Dir damit benötigte Informationen hereinholen.
     
  10. Hallo Ebs,

    danke für die Hilfe.
    Eine Unklarheit hab ich noch.

    Code:
    Kein Problem. (Hab noch den Namen des Sheet's angepasst)
    Diese Abfrage hab ich qxls_Minusliste genannt

    Bin nicht sicher, ob ich das so richtig verstanden habe...
    So hab ich nochmals eine Abfrage auf die qxls_Minusliste gemacht und zwar auf die "S/N od Modul N°" (Hab ich unterdessen auch nach "Serial" umbenannt.
    Diese Abfrage hab ich qxls_Minusliste_SerialNr genannt.

    Dies klappt ganz gut. So wird mir dann schön mit dieser Abfrage die vorhandenen SerialNr. angezeigt.

    Ich hoffe, ich habe das bis dahin richtig verstanden.

    Jetzt aber, wenn ich in meinem Endlosform das ganze überprüfen will, da hapert's noch.

    Muss ich dann
    a) die datenherkunft der endlosform nochmal mit der qxls_Minusliste_SerialNr "Joinen"?
    Wenn ich das mache, dann erhalte ich alle Datensätze mehrfach.

    oder b)
    Ein ungebundenes Feld in der Endlosform erstellen, und in diesem per VBA für jede Zeile überprüfen lassen, ob in der "qxls_Minusliste_SerialNr" "Me!Serial_Nr" vorkommt?

    Dann bräuchte ich noch ein Stichwort, wie ich das überprüfe.
    Schleifen, und dann nachschauen... mit -->dlookup oder so?

    oder c)
    Bin ich völlig falsch?

    Danke vielmals für die Hilfe von vorher etc.
     
    boonsi1980, 24. April 2010
    #10
  11. Heureka,

    ich hab die Lösung...

    Folgende Funktion hab ich irgendwo aufgestöbert (schon abgeändert für meine Bedürfnisse):
    Code:
    Und dann im Steuerelementinhalt meines ungebundenen Feldes der Endlosform:
    Code:
    Jetzt noch eine Frage.
    die Abfrage "qxls_Minusliste_SerialNr" holt sich ja die daten aus der XLS Tabelle, beim öffnen der DB oder nach einem F9 bzw. aktualisieren.

    Ist das das gleiche, wie xyz.requerry? oder xyz.recalc?
    Ich überleg mir nämlich, wohin das ich die aktualisierung mache... bei "datensatzwechsel" ist das wohl etwas zu häufig, wenn den "traffic" nicht ins unermessliche hochschiessen will.

    Habt ihr da eine Idee dazu?
    (Die "Minusliste" wird so ca. 10x am Tag aktualisiert.)

    Edit:
    Ich hab noch gelesen, das Funktionen wie DCount nicht so schnell sind.
    Wie sieht das dann aus in sagen wir mal... 5 Jahren?
    Pro Tag werden ca. 6 Komponenten erledigt. D.H. Pro jahr sind das grob gerechnet ca. 1440 Einträge in der Komponentenliste, welche dann jedesmal mit dlookup verglichen werden.
    In der Vergleichstabelle sind jeweils zwischen 20-150 Zeilen.
     
    boonsi1980, 24. April 2010
    #11
  12. Wenn man die Exceltabelle in die Datenherkunft des Endlosformulares einbinden kann, sollte man das tun, ein zusätzliches berechnetes Feld erzeugen und das Formularfeld an dieses Feld binden. Die Gedanken an DLookup, DSum u.ä. sollten somit entfallen.
    Code:
    Die ursprüngliche Abfrage hat 39 Datensätze. Mit zusätzlicher Einbindung der Exceltabelle wie gezeigt (RIGHT JOIN) ergeben sich 54 Datensätze, bei einem INNER JOIN 21. Was sinnvoll ist, ob zusätzliche Filterungen notwendig sind, woran Du Duplikate erkennst: Keine Ahnung und keine Vorstellung.

    Das zusätzliche berechnete Feld könnte so aussehen:
    Code:
     
  13. Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist

    Also,

    die neue SQL Abfrage war dank deiner Hilfe kein Problem.
    In meinem Form hab ich die Datenherkunft des Formulars dann auf diese neue Abfrage gesetzt.

    Jetzt hab ich aber mit
    Code:
    leider ein Problem.
    (Muss hier nicht ein Semikolon sein?)

    Zuerst dachte ich, es gehe nicht, weil die Daten gemischt sind.
    In der Excel Tabelle hab ich ja noch die Spalte "SN als Text" in der ich alles in Text umwandle.
    Leider geht's mit dieser auch nicht.

    Ich bekomme die Meldung:
     
    boonsi1980, 24. April 2010
    #13
  14. Der Hinweis mit dem Semikolon ist richtig.

    Vielleicht benötigst Du entsprechend der Inhalte ein anderes Kriterium als > "", vielleicht so etwas wie Is Not Null bzw IsNull([Feld]).

    Diese Abfrage ist in die neue Abfrage wie gezeigt eingebunden?

    Nebenbei: Auf eine Zwischenabfrage wie qxls_Minusliste würde ich verzichten und gleich wie in #9 gezeigt auf die originale Tabelle verweisen, dann natürlich nicht alle Felder, sondern nur die benötigten Felder verwenden, und der Aliasname T für die lange Tabellenbezeichnung steht nicht ohne Grund da, sondern steht bereit für eine qualifizierte Bezeichnung von Feldern (inkl. Tabellenherkunft des Feldes).
     
  15. Also so hab ich das eingebunden

    Ist so eingebunden:
    Code:
    Benannt hab ich das nach: qKomponentenliste_Excel
    Und für mein Endlosform diesen Namen als Herkunft gewählt

    Gehen beide nicht.
    Gute Idee,
    ich werde das dann bald noch umbauen. Mit dem "Aliasnamen" blick ich noch nicht ganz durch. Aber da werd ich zuerst mal noch suchen, das werde ich sicher noch selber heruasfinden *Smilie
     
    boonsi1980, 24. April 2010
    #15
Thema:

Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist

Die Seite wird geladen...
  1. Aus access überprüfen ob in einer Spalte "Wert" vorhanden ist - Similar Threads - access überprüfen Spalte

  2. Access Datensatzzähler zu kurz

    in Microsoft Access Hilfe
    Access Datensatzzähler zu kurz: Die Ansicht der Nummer des Datensatzes ist zu kurz (vgl. Anlage). Wie kann ich die etwas breiter machen?[ATTACH]Im angezeigten Fall ist es nicht der 1 von 208 Sätzen, sondern der 1 von 20800.
  3. Installationsfehler OFFICE 2019 ?

    in Microsoft Access Hilfe
    Installationsfehler OFFICE 2019 ?: Hallo Zusammen ! Ich bin neu hier und möchte in ein ACCESS 2019 Formular VBA-Code einbauen. Der Code soll mittels DAO.Recordset usw. Daten bearbeiten. Leider wird mir beim Schreiben das Objekt...
  4. MS Access Formular: Datensatz duplizieren mit Unterformularen

    in Microsoft Access Hilfe
    MS Access Formular: Datensatz duplizieren mit Unterformularen: Hallo Ihr Lieben, ich bin ziemliche Anfängerin bei MS Access also nehmt es mir nicht übel, wenn ich Dinge falsch bezeichne etc. :) Ausganslage Ich hab ein Hauptformular (1) (Angaben zur...
  5. Import Daten aus Access Abfrage klappt nicht

    in Microsoft Excel Hilfe
    Import Daten aus Access Abfrage klappt nicht: Moin, ich habe ein Problem. Ich habe eine Datenbank in Access mit diversen Tabellen und Abfragen. Jetzt habe ich eine neue Abfrage erstellt und muß das Ergebnis täglich in eine Exceldatei...
  6. Auslesen Windowsbenutzer in einer Datenbank

    in Microsoft Access Hilfe
    Auslesen Windowsbenutzer in einer Datenbank: Hallo zusammen, wie kann ich auslesen, welcher Windows Benutzer gerade aktuell in einer Datenbank ist? Geht das? Danke Matthias
  7. Auslesen einer Abfrage in VBA Modul

    in Microsoft Access Hilfe
    Auslesen einer Abfrage in VBA Modul: Hallo zusammen, ich wünsche allen ein frohes und gesundes Jahr 2024. Ich habe eine alte Access 2003 und da habe ich zur Ermittlung von Planungsdaten folgende Funktion genutzt, jetzt mit Office 365...
  8. Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle

    in Microsoft Access Hilfe
    Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle: Hallo, ich möchte gerne beim Import einer CSV - Datei (eingebettet in ein VBA Modul / Import-Spezifikation ist angegeben) überprüft wissen, ob die Feldnamen der Quelldatei identisch ist mit den...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden