Office: (Office 2010) Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

Helfe beim Thema Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t) in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hi Martin, Tausend Dank!!! Hab den Fehler gefunden! Code: Set rsSource = db.OpenRecordset("tblImport", dbOpenDynaset) Set rsTarget =... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Silvie31, 7. Mai 2012.

  1. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)


    Hi Martin,

    Tausend Dank!!! Hab den Fehler gefunden!
    Code:
    Du glaubst ja gar nicht wie froh ich bin... *Smilie
    Vielen lieben Dank euch allen für die super Hilfe. (Hoffentlich bin ich in 5 Minuten nicht schon wieder hier.... )

    LG Silvie
     
    Silvie31, 21. Mai 2012
    #31
  2. Hi Sylvie,

    hatte leider die letzten Tage ein massives Malware-Problem und war deshalb nicht online.
    Wie ich sehe hat Dir aber Martin helfen können.
    Nun ist es so, wie ich es mir schon gedacht habe.
    (Ich wollte eigentlich noch eine Anmerkung hierzu machen, Stichwort "Relationales Datenmodell" und beschreibbares Recordset)
    Verstehen tue ich es aber ehrlich gesagt nicht so ganz wieso Du die Daten nun redundant in zwei Tabellen führst.
    Aber egal, wenn es für Dich passt umso besser.
    Warum Du aber "rsTargetcomp" nun beschreibbar machst, wo doch "rsTarget" schon beschreibbar ist musst Du mir jetzt noch erklären!

    Du weißt auch wo Deine Recordset-Zeiger alle stehen und bist Dir sicher den richtigen DS zu ändern?

    Gruß

    LL
     
  3. Hallo Louis,

    hatte diene Antwort gar nicht mehr gesehen und war jetzt auch zwei Tage mit anderen Dingen beschäftigt. Also zu deiner Antwort:
    Die Importtabelle ist nur temporär, die Daten werden nach dem Import gelöscht und letztendlich also nur in einer Tabelle gespeichert.

    Warum mach ich das? Zuerst werden die Stammdaten meiner (zu importierenden) Kongresse (Name, Fachgebiet, etc.) an die entsprechende Tabelle meiner DB angefügt bzw. editiert. Danach müssen aber auch noch zu jedem Kongress die einzelnen Editionen geklärt werden (Jahr, Datum, #Teilnehmer etc.). Auch hier muss erst wieder geprüft werden, ob eine Edition bereits in der Editionentabelle meiner DB vorhanden ist. Zur Identifizierung sind Kongressname (oder besser noch die KongressID) und Datum ausschlaggebend. Wenn ich jetzt vorher die IDs meiner Haupttabelle in die Importtabelle überführe, kann ich diese später zur Identifikation nutzen. Ich muss also nicht erneut die RatCliff Methode anwenden. Verstehst du was ich meine?

    Hier stehe ich aber direkt wieder vor dem nächsten Problem. Ein Beispiel: Die RatCliff Methode hat ein Ergebnis unter 69 erzielt, mein Kongress besteht also nicht und muss neu angelegt werden. Wie kann ich auch in so einem Fall die nagelneue (gerade erstellte) ID in die Importtabelle überführen?
    Habe es natürlich so versucht, aber das klappt nicht:
    Code:
    Kriegt man das irgendwie hin?

    Das habe ich erst auch nicht verstanden, dachte dass ich doch rsTarget zum editieren nutzen kann. Als das nicht geklappt hat, habe ich rsTargetComp probiert, mit mehr Erfolg (zum editieren musste ich diese natürlich erst beschreibbar machen).
    Jetzt ist mir aber klar geworden warum dass so ist. Mit rsTarget passiert überhaupt gar nichts, es gibt keine Schleife und nix. D.h. er kann auch gar nicht wissen welchen DS er editieren soll. Meine Folgerung: rsTarget ist unnütz und kann gelöscht werden. Habs probiert und alles klappt noch genauso wie vorher. Ich habe einige Beispiele durchgespielt und er hat mir eigentlich immer alles richtig editiert/angefügt.
    Wenn das, was ich gerade erzählt habe stimmt, dann ja! *Smilie

    Mein Beitrag wirkt wiedermal verwirrend, hoffe du kannst mir trotzdem folgen. Soll ich nochmal den ganzen Code posten?

    Vielen Dank für deine Mühe!

    LG Silvie
     
    Silvie31, 23. Mai 2012
    #33
  4. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

    Hallo,
    es passt zwar nicht zur Überschrift, aber ich habe ein weiteres Problem, dass ich nicht richtig lokalisieren kann. Bevor ich meine Daten importiere, wird meine Importtabelle erst ein wenig bearbeitet. Zum Beispiel trimme ich alle Textffelder, damit fälschlich eingetippte Leerstellen verschwinden. Ausserdem ändere ich manche Strings:
    Code:
    Und manche Felder bekomme eine Art Platzhalter, falls Sie leer sind:
    Code:
    Das hat auch immer wunderbar funktioniert. Jetzt bin ich jedoch an einer Stelle an der ich merke dass es nicht mehr immer funktioniert. Das komische ist, manchmal macht er diese Dinge, manchmal aber auch nicht. Ich kann hier leider kein Muster erkennen, habt ihr vielleicht spontan eine Idee?

    Falscher Gebrauch von "Is Null" zum Beispiel? Kann eigentlich kaum sein, da es immer funktioniert hat.....

    Ich verzweifle hieran...

    Dank und LG
    Silvie

    EDIT: Der Code steht hinter einem Button. Manchmal macht er die Dinge beim ersten Klick, manchmal erst beim fünften.... Es kann also eigentlich nicht am Code liegen!
     
    Silvie31, 23. Mai 2012
    #34
  5. Hallo!

    Warum startest du dann keinen neuen Thread?

    Wie merkst du, dass es nicht immer funktioniert?
    Vielleicht trifft Is Null gar nicht zu, weil ein Leerstring enthalten ist?

    BTW: db.Execute würde ich immer mit dbFailOnError-Parameter verwenden.

    mfg
    Josef
     
    Josef P., 23. Mai 2012
    #35
  6. Sorry, ich kam einfach vom einen zum anderen. Beim nächsten mal mach ich einen neuen Thread auf.
    Ich führe die Abfrage einfach aus und schaue mir das Ergebnis in der entsprechenden Tabelle an (Zur Sicherheit aktualisiere ich die Ansicht). Dann sehe ich dass es manchmal klappt, manchmal aber nicht. Mir kommt es sehr strange vor.
    Ja es geht tatsächlich um leere Felder, aber ist nicht genau das NULL? Ich dachte 0 = 0 und leer = Null..... Hmmpffh! Also besser so?
    Code:
    Thanks!

    X Sil
     
    Silvie31, 23. Mai 2012
    #36
  7. Hallo!

    NULL ist kein Wert - nicht einmal ''.

    =>
    Code:
    Anm.: deine Variante würde zu einem TableScan (alle Datensätze werden durchlaufen) führen. Die obige Variante erlaubt die Nutzung eines Index auf Association_Name (falls einer vorhanden ist).

    mfg
    Josef
     
    Josef P., 23. Mai 2012
    #37
  8. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

    Ich probiere 2 Stunden rum und verzweifle und du erklärst es in einem Sätzchen! Super! Vielen, vielen Dank für die Entwirrung!

    LG Silvie!
     
    Silvie31, 24. Mai 2012
    #38
  9. Hallo Silvie,

    ??
    Ich blick ehrlich gesagt gerade nicht mehr durch *frown.gif*
    ach so *wink.gif*
    Code:
    und dann gibt es hier keinen Fehler?!

    ??
    Du verwirrst mich *Smilie

    Gruß

    LL
     
  10. Hi Louis,

    Ja ich war auch ein wenig verwirrt.... *Smilie
    Diese Zeilen sind natürlich umgeschrieben. Erst gab es drei geöffnete Recordsets: rsSource (Importtabelle), rsTarget und rsTargetComp (beide Zieltabelle). Einer der letzten beiden war unnötig, deshalb habe ich eins gelöscht und alles andere umbenannt. Vielleicht wird es klarer wenn ich Dir nochmal den Code aufschreibe:

    Code:
    Dies funktioniert (ohne blauen und grünen Code) soweit. Das Anlegen bzw. editieren macht er m.E. richtig!

    Du verstehst aber warum ich die IDs meiner Zieltabelle auch (temporär) an die Importtabelle überführen will?
    Bei einem bestehenden DS (RatResult >=69) ist das kein Problem. Das funktioniert prima mit der roten Zeile rsSource("ID_congress") = origID.
    Was aber wenn ratResult
     
    Silvie31, 24. Mai 2012
    #40
  11. Ich lese zwar nur noch mit einem Auge mit, aber den zuletzt vergebenen Autowert erhältst du mit
    Code:
    DB ist dabei eine DB-Instanz, die bem Anfügen schon da war. Currentdb brignt da also nix.
     
    Atrus2711, 24. Mai 2012
    #41
  12. Super Martin!

    Das ist genau das, was ich brauche. Funktioniert super. Dankeschön!

    LG Silvie
     
    Silvie31, 24. Mai 2012
    #42
  13. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

    Ja, jetzt habe ich es verstanden *wink.gif*
    Damit erklärt sich einiges.
    Jetzt sieht das ganze auch sauber aus ;-)
    Deshalb hatte ich ja auch gefragt, warum Du noch zusätzlich ein beschreibbares Recordset öffnest, wo doch schon eins vorhanden ist ;-)
    Die Lösung zum ID-Problem hast Du ja von Martin bekommen, zu vermerken sei noch das @@Identity sich nur auf den letzten Wert eines AutoWert-Feldes nach einem Insert bezieht.

    Gruß

    LL
     
Thema:

Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

  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