Autor Thema: Problem  (Gelesen 4220 mal)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Problem
« am: 18.12.06 - 17:54:18 »
Also ich weiss nicht unter was für ein Topic das hier fällt, deswegen entschuldige ich mich schon mal für den Header.

Also ich möchte ein Suche auf eine Datenbank ausführen. Alles kein Problem im eigentlichen Sinne, ABER der Suchbegriff soll mit meiner Version von Soundex umgeschlüsselt werden. Das heisst der Schlüssel nach dem ich mit dem Search auf die zu durchsuchende DB gehe ist mein Abstrahierter Suchbegriff. Die Db in der ich suchen möchte ist die DocHouse-Adress-DB , in der darf ich aber nichts verändern. Also keine extra VIEW einbauen oder neue Felder in die Dokumente schreiben.
Desweiteren darf ich nicht !!! in eine Dritte DB kopieren, weil das zu Laufzeitlastig ist. Auch darf ich die Daten nicht einfach in die Ausgangs-DB in einen Ordner kopieren.

Meine Frage ist wie  kann ich die Daten in DocHouse mit meiner Soundex version verschlüsseln, damit mein Search die richtigen Daten findet. Ich hatte schon folgende Einfälle, die aber alle nicht die Kriterien erfüllt haben , dass mein Chef sagt, so wirds gemacht.


Also ich dachte zuerst an eine Subform die man einfach einbauen könnte. die hätte dann einfach die benötigten Felder umgeschlüsselt

Dann dachte ich an die Dritte DB, was aber auch zu langsam geworden wäre.

Meine letzte Idee basierte auf eine programmierten View. Die per Script eine View nach meinen Kriterien erfüllt, also was in der ersten , zweiten , dirtten Spalte steht, aber das geht , wenn ich mich recht informiert habe nur mit Templates die dann wieder in der DocHouse-DB eingebettet werden müsste, was ja auch gegen die Auflage verstösst, das DocHouse unangetastet bleiben muss.

Meine Frage ist nun kann eine View auch ohne Template so erstellen wie man möchte ? oder habt ihr ne Idee wie man es umsetzten könnte.

Bitte Bedenkt immer, dass die Datenmengen die durchsucht werden sollen so bei 50.000 Dokumenten liegt, also fällt es aus, dass jedes einzelene Dokument untersucht wird, dann hätte ich ja die Lösung.

Ich hoffe ich habe mich verständlich ausgedrückt. Und wenn ich mich Recht entsinne gibt es nen @Notes-award , wäre doch ne Idee das als Aufgabe zu nehmen.

Danke schon mal im Voraus
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Problem
« Antwort #1 am: 18.12.06 - 18:40:59 »
also ich verstehe das Problem bei der Sache nicht so ganz...

so finde ich zum Beispiel in der Mail- Datenbank alle Dokumente, deren Subject wie "test" klingt:

   Dim ses As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection   
   Dim doc As NotesDocument
   
   Dim qry As String
   
   qry = |@Soundex( Subject ) = @Soundex( "test" )|
   
   Set db = ses.CurrentDatabase
   Set dc = db.Search( qry , Nothing , 0 )

Also wo ist das Problem !?

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
1., und das gilt ganz besonders für Azubis, "Verwende aussagekräftige, genaue Betreffzeilen"   :-P
Stell Dir vor, jeder würde seine Frage mit "Problem" oder "Frage" titulieren. Brrrrrr.  :o

2) Mit "meine Version von Soundex" meinst Du diese?
Der Link wäre nett gewesen, nicht jeder kennt alle Postings des letzten Jahres auswendig.  ;)

3) Einschränkungen
Zitat
keine extra VIEW einbauen oder neue Felder in die Dokumente schreiben. Desweiteren darf ich nicht !!! in eine Dritte DB kopieren, weil das zu Laufzeitlastig ist.
Da wirds schwierig.  :-\

4) Meine Frage ist nun kann eine View auch ohne Template so erstellen wie man möchte ?
Du könntest vor jeder Suche mit DXL die View erstellen und nachher wieder wegschmeissen. Aber ob das mittelfristig bei 50.000 Dokumenten sehr performant ist, wage ich zu bezweifeln. ;D

IMHO (gscheitere Köpfe mögen mich bitte eines Besseren belehren) wirst Du ohne Modifikationen in der zu durchsuchenden DB nicht auskommen.  :-:
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
   qry = |@Soundex( Subject ) = @Soundex( "test" )|
   Set dc = db.Search( qry , Nothing , 0 )
Führt er @Soundex( Subject ) für jedes Dokument in der DB aus, wenn er sucht? Das kann ich mir nicht ganz vorstellen.

Ich hätte es eher so verstanden, wie es auch Duffbert beschreibt.
Wenn ich ein Multivalue-Field mit einem Namen habe, so kann ein Value der Soundex-Wert sein. Und wenn ich dann nach @Soundex(Name) suche, findet er diesen.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Problem
« Antwort #4 am: 18.12.06 - 19:11:57 »
der DB.Search funktioniert im Prinzip exakt wie eine Ansichts- Selektionsformel, führt also die Formel für jedes Dokument aus. Welcher Task dabei die Aufgabe übernimmt, kann ich nicht sagen. Aber ich habe das schon (in Ähnlicher weise, allerdings nicht mit Soundex) auf Datenbanken mit 300.000 Dokumenten durchgeführt und hatte in akzeptablen Wartezeiten das Ergebnis vorliegen.

Das genannte Beispiel habe ich bei mir in der Mail- Datenbank in Verbindung mit "putInFolder" getestet, und das Ergebnis schien mir in Ordnung zu sein.

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Ah, OK. Zum Ausprobieren hatte ich jetzt keine Zeit. Aber ich glaubs Dir mal. ;)

Ich fürchte nur, das wird dem Fahrradlbua nicht helfen, da er a) vermutlich eine GUI-Lösung bauen will/muss und b) SEINE Soundex-Funktion nicht als @-Formel zur Verfügung steht.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #6 am: 05.01.07 - 13:50:10 »
@m3
der Fahrradlbua ist wieder da! (Was auch immer das heissen soll)

Natürlich steht meine Soundex-Variante nicht als @Function zur Verfügung. ich kann ja schlecht bei lotus nOtes anrufen und sagen hier hab was neues , bitte nennt es @Roundex ..... also brauche ich Script.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Problem
« Antwort #7 am: 05.01.07 - 14:09:39 »
Fahrradlbua = Fahrrad-Junge = bikerboy
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #8 am: 08.01.07 - 17:01:50 »
Also meine Version von @Soundex sieht folgendermaßen aus ( Wie gesagt, nichts innovatives aber trotzdem mag ich es ) :

Code
Function Roundex (Byval searchValue As String) As String
	searchValue = Ucase(searchValue)
	char = Left$(searchValue, 1)
	If (Asc(char) < Asc("A")) Or (Asc(char) > Asc("Z")) Then
		Roundex = "00000"
		Exit Function
	End If
	newString = char
	For i = 2 To Len(searchValue)
		char = Mid$(searchValue, i, 1)
		
		Select Case char
		Case "A", "E"
			char2 = Mid$(searchValue, (i+1), 1)
			Select Case char2	
			Case "I","Y"
				convChar = "7"
			Case Else
				convChar = ""
			End Select
		Case "H", "I", "O", "U", "W", "Y"
			convChar = ""
		Case "'"
			convChar = ""
		Case "B", "F", "P", "V"
			convChar = "1"
		Case "C", "G", "J", "K", "Q", "S", "X", "Z"
			convChar = "2"
		Case "D", "T"
			convChar = "3"
		Case "L"
			convChar = "4"
		Case "M", "N"
			convChar = "5"
		Case "R"
			convChar = "6"
		Case Else
			Exit For
		End Select
		If Not (Right$(newString, 1) = convChar) Then
			newString = newString & convChar
			
		End If
		
		If (Len(newString) = 5) Then
			Exit For
		End If
	Next
	
	newString = Left$(newString & "00000", 5)
	Roundex = newString
End Function

Naja diese Umwandlung muss nun auf den Suchbegriff angewendet werden. Und halt auf jedes zu untersuchende Feld , bzw jeden Eintrag des Indexes.
Also ich hoffe ihr könnt mir weiter helfen. Ich will langsam fertig werden. Es macht depressiv wenn man hier sitzt und man kommt nicht von der Stelle
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Problem
« Antwort #9 am: 09.01.07 - 10:27:00 »
also Deine Funktion lässt sich in einer Zeile Formel- Sprache zusammenfassen... und damit in ein DB.Search einbauen. Zugegeben: Die Formel wird etwas "unförmig", aber funktionieren sollte es trotzdem:

Hier erst mal die Formel, wie sie generell aussehen müsste:

searchVal := "ABC";
list := @Explode( "AI|7~AY|7~EI|7~EY|7~A|~E|~H|~I|~O|~U|~W|~Y|~'|~B|1~F|1~P|1~V|1~C|2~G|2~J|2~K|2~Q|2~S|2~X|2~Z|2~D|3~T|3~L|4~M|5~N|5~R|6" ; "~" );
validList := @Explode( "1~2~3~4~5~6~7" ; "~" );
repList2 := validList + validList;
repList3 := repList2 + validList;
repList4 := repList3 + validList;

inter1 := @ReplaceSubstring( searchVal ; @Word( list ; "|" ; 1 ) ; @Word( list ; "|" ; 2 ) );
inter2 := @Explode( inter1 ; validList );
inter3 := @ReplaceSubstring( inter1 ; inter2 ; "~" );
inter4 := @Left( inter3 ; "~" );

inter5 := @ReplaceSubstring( inter4 ; repList4 : repList3 : repList2 ; validList : validList : validList );
inter6 := @Left( inter5 + "00000" ; 5 );

inter6

Jetzt muss man das nur noch "zusammenfassen" in einer Zeile, dann kann man das über db.Search( ... ) in jedes Script einbauen.

Das zusammenfassen kann ich grade nicht machen, muss los, aber zumindest hast Du jetzt mal einen Ansatzpunkt...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #10 am: 09.01.07 - 14:33:40 »
 ??? puh ???

bin gerade ein bisschen überfordert. ICh glaube ich muss doch einmal auf deine Zusammenfassung warten. Ich erkenne zwar dass die Formel das selbe ausgibt wie mein Script , aber wie ich das nun implementieren kann ist mir ein Rätsel. In der Zwischenzeit werde ich die Hilfe befragen vielleicht schaffe ich es ja auch noch selber.

Ich bedanke mich erstmal für die Schützenhilfe.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #11 am: 10.01.07 - 15:15:04 »
So habe es ehrlich versucht , aber bin gescheitert.

@Tode :

kannst du mir bitte deine Lösung geben, wenn du Zeit hast natürlich.
Wäre total nett.

Danke schon mal
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Problem
« Antwort #12 am: 10.01.07 - 16:49:10 »
Du willst also wirklich von mir einen Moloch von Formel, zusammengepatscht in eine einzige Zeile Code, nachdem Du nicht mal die aufgedröselte Version der Formel verstanden hast ?

Ich finde es ja toll, dass Du so in meine Programmierkenntnisse vertraust, aber diese Formel habe ich mal eben im Subject- Feld meiner Mail zusammengetippt....

Sie mag in vielen Fällen tatsächlich das gleiche Ergebnis liefern wie Dein Script, aber zu 100% nicht in allen - wenn auch die Fälle, in denen sie es nicht tut, ziemlich selten sein sollten, und diese sich durch leichte Modifikation des Scripts noch weiter verringern lassen...

So eine Formel einzusetzen, OHNE sie verstanden zu haben, ist Quatsch und führt unweigerlich zu Problemen.
Trotz allem werde ich -weil ich so ein riesen Fan der Formel- Sprache bin- Dir die Formel mal ein wenig zu erklären versuchen...

und schon wärst Du kräftig auf den Hosenboden gefallen... beim Kommentieren habe ich noch einige Fehler entdeckt...


REM { searchval ist mein Input....};
searchVal := "ABC";
REM { list ist die Liste aller Buchstaben inklusive der Zahlen, die sie ersetzen: AI|7 heisst: ersetze AI durch 7};
REM {Durch die Dokumentierung habe ich schon den ersten Fehler entdeckt: sind im String schon vorher Zahlen drin, geht das schief... in der Korrekten Version müssen also zuerst die Zahlen durch ein Sonderzeichen ersetzt werden, bevor die Buchstaben in Zahlen übersetzt werden};
list := @Explode( "1|-~2|-~3|-~4|-~5|-~6|-~7|-~8|-~9|-~0|-~AI|7~AY|7~EI|7~EY|7~A|~E|~H|~I|~O|~U|~W|~Y|~'|~B|1~F|1~P|1~V|1~C|2~G|2~J|2~K|2~Q|2~S|2~X|2~Z|2~D|3~T|3~L|4~M|5~N|5~R|6" ; "~" );
REM { validList sind alle gültigen Zahlen. Alles was nicht diese Zahlen sind, wird später durch ein Sonderzeichen ersetzt};
validList := @Explode( "1~2~3~4~5~6~7" ; "~" );
validString := @Implode( validList ; "" );
REM {Die repLists braucht man, um dieses if:
      If Not (Right$(newString, 1) = convChar) Then
         newString = newString & convChar
         
      End If
nachzuprogrammieren. Sie enthalten z.B. : 11 , 111 , 1111. };
repList2 := validList + validList;
repList3 := repList2 + validList;
repList4 := repList3 + validList;
repList5 := repList4 + validList;
repList6 := repList5 + validList;

REM {Jetzt ersetzen wir in unserem (in Grossbuchstaben umgewandelten) SearchString die Zahlen durch - und die Buchstaben durch die entsprechenden Zahlen};
REM { aus Eier3salat# wird : 76-243# (7=ei,6=r,-=3,2=s,4=l,3=t,#=#) };
inter1 := @ReplaceSubstring( @Uppercase( searchVal ) ; @Word( list ; "|" ; 1 ) ; @Word( list ; "|" ; 2 ) );

REM {Dieser Explode liefert uns eine Liste aller UNGÜLTIGEN Zeichen im String inter1 };
REM { Ergebnis: "-" : "#" (also eine Liste bestehend aus - und #) };
inter2 := @Unique( @Explode( inter1 ; validString ) );

REM { Jetzt ersetzen wir alle diese Zeichen im inter1 durch ein einziges, nämlich die Tilde };
REM { Ergebnis: 76~243~ };
inter3 := @ReplaceSubstring( inter1 ; inter2 ; "~" );

REM { Nun holen wir uns alle gültigen Zeichen bis zum ersten ungültigen (alle ungültigen Zeichen wurden durch ~ ersetzt) };
REM { Das + "~" steht hier für den Fall, dass ein Wort kein Sonderzeichen enthält und nur aus gültigen Buchstaben besteht };
REM { Ergebnis: 76 };
inter4 := @Left( inter3 + "~" ; "~" );

REM { Jetzt müssen wir die doppelten und dreifachen Werte rausfiltern. };
REM { Zuerst wird auf 6 gleiche aufeinanderfolgende Zeichen überprüft (repList6 ) und diese werden durch 1 Zeichen ersetzt, dann prüfen wir 5 gleiche aufeinanderfolgende Zeichen (repList5), dann 4, usw. };
REM {sollten jetzt allerdings 7 gleiche Zahlen aufeinanderfolgen, dann geht das schief. Das könnte man durch ein erstellen von repList7 und einbinden in diese Zeile erweitern auf 7 und so weiter... ich habe mit Deinem Algorythmus keine Erfahrung und weiss nicht, wie viele gleiche Zeichen maximal aufeinander folgen können....Das ist die Krux dieser Formel. Eine FOR- Schleife könnte das Problem lösen, lässt sich aber nicht in db.Search verwenden (das steigt aus, wenn die Formel zu komplex wird)};
REM { Aus 7776331112222 würde also 76312 };
inter5 := @ReplaceSubstring( inter4 ; repList6 : repList5 : repList4 : repList3 : repList2 ; validList : validList : validList : validList : validList );

REM { Jetzt müssen wir von diesem String nur noch die ersten 5 Zeichen nehmen und mit nullen auffüllen. Fertig. };
inter6 := @Left( inter5 + "00000" ; 5 );

ERGEBNIS: Eier3Salat# = 76000


Und jetzt hast Du mich doch tatsächlich bei der Neugier gepackt... Diese Funktion könnte ich eigentlich Teuer verkaufen, ich hoffe, Du weisst das zu schätzen. Hier also Deine "Roundex"- Funktion um eine Datenbank zu durchsuchen nach Deinem eigenen Roundex.
Parameter:
searchField : FeldName des Feldes in dem gesucht werden soll, string
searchVal : Wert, nach dem gesucht werden soll (also 35200 für Dankeschön )

Rückgabewert: Alle Dokumente in der Datenbank, die im angegebenen Feld den von dir gewünschten Roundex- Wert enthalten...

Function RoundexSearch( searchField As String , searchString As String ) As NotesDocumentCollection
   Dim ses As New NotesSession   
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   
   Dim qry As String
   
   Set db = ses.CurrentDatabase
   
   qry = { x := } & searchField & {;
list := @Explode( "1|-~2|-~3|-~4|-~5|-~6|-~7|-~8|-~9|-~0|-~AI|7~AY|7~EI|7~EY|7~A|~E|~H|~I|~O|~U|~W|~Y|~'|~B|1~F|1~P|1~V|1~C|2~G|2~J|2~K|2~Q|2~S|2~X|2~Z|2~D|3~T|3~L|4~M|5~N|5~R|6" ; "~" );
validList := @Explode( "1~2~3~4~5~6~7" ; "~" );
validString := @Implode( validList ; "" );
repList2 := validList + validList;
repList3 := repList2 + validList;
repList4 := repList3 + validList;
repList5 := repList4 + validList;
repList6 := repList5 + validList;

inter1 := @ReplaceSubstring( @UpperCase( x ) ; @Word( list ; "|" ; 1 ) ; @Word( list ; "|" ; 2 ) );
inter2 := @Explode( inter1 ; validString );
inter3 := @ReplaceSubstring( inter1 ; inter2 ; "~" );
inter4 := @Left( inter3 + "~" ; "~" );

inter5 := @ReplaceSubstring( inter4 ; repList6 : repList5 : repList4 : repList3 : repList2 ; validList : validList : validList : validList : validList );
inter6 := @Left( inter5 + "00000" ; 5 );

inter6="} & searchString & {"}
   
   Set RoundexSearch = db.Search( qry , Nothing , 0 )
   
End Function

Natürlich wie immer ohne jegliche Fehlerbehandlung und ohne Gewähr.
Ausserdem musst Du für Deine Zwecke noch db variabel gestalten, weil bei Dir CurrentDatabase <> SearchDatabase

Wie performant das ganze in grossen DBs läuft weiss ich nicht...

Gruß
Tode

Edit: Um gleich Deine eigene Roundex mit einzubauen müsste das ganze dann so aussehen:

searchString = Tatsächlich gesuchter String (also z.B. Dankeschön) und dann eine Zeile ersetzen:

inter6="} & Roundex( searchString ) & {"}
« Letzte Änderung: 10.01.07 - 16:59:09 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #13 am: 10.01.07 - 17:38:47 »
Danke Danke für die Mühe die du dir gemacht hast.

Beim Lesen ist aber aufgefallen, dass du eine Kleinigkeit vergessen hast. Mein ersten Wert ist immer der erste Buchstabe des Wortes. Also wird aus Eiersalat = E6000 , werde mich morgen dann noch dran machen die Sache umzusetzen. Also hast du den Rest des Abends frei  ;) (Sorry meine Art von Humor, Ich bin dir wirklich dankbar für die Hilfe)

Schönen Abend noch
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #14 am: 11.01.07 - 08:59:20 »
Einen wunderschönen guten Morgen Deutschland.

So habe das ganze mal implementiert aber er findet leider immer nichts. Also irgendwo hinkt es.

Ich glaube die Welt (, oder ich) sind noch nicht bereit für meine Funktion, ich werde die einfache Soundex-Version verwenden und mich dann im späteren Verlauf meiner Ausbildung nochmal mit dem Problem rumärgern.

Ich möchte mich an dieser Stelle noch einmal bei allen Bedanken, die mich so tatkräftigt unterstützt haben. ( Special greats to Tode )
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Problem
« Antwort #15 am: 11.01.07 - 09:02:32 »
Da du ja noch in der Ausbildung bist, hier meine 2 Cent zu deiner Ausbildung:

In der modernen Gesellschaft redet man nicht mehr von "Problemen"; vielmehr ist hierfür die Begrifflichkeit "Herausforderung" gebräuchlich.

Du wirst dich also zu einem späteren Zeitpunk erneut der Herausforderung "Soundex" stellen und nicht lapidar "mit dem Problem rumärgern" ...

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Glombi

  • Gast
Re: Problem
« Antwort #16 am: 11.01.07 - 09:15:02 »
Ich habe bis jetzt nicht verstanden, warum Soundex nicht verwendet werden soll.

Immerhin verwenden es doch die Amis, um Passagierdaten abzugleichen. Dann kann es wohl so schlecht nicht sein  ;)
Kleiner Scherz, ich meine, die Funktion ist standardisiert.

Andreas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Problem
« Antwort #17 am: 15.01.07 - 11:24:36 »
also wenn das nicht klappt, dann hast Du was falsch gemacht.. bei mir hat die gepostete Funktion das ergebnis zurückgeliefert, was ich erwartet hatte.
Vielleicht postest Du kurz Deinen "Ergebnis- Code" dann finden wir sicher Deinen Fehler... (ich habe jetzt ein persönliches Interesse an dem Fall: wenn ich schon so viel Zeit da rein stecke, dann will ich das Problem auch gelöst wissen und nicht 1 Meter vor dem Ziel aufgeben...

Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #18 am: 15.01.07 - 17:13:45 »
@Tode die Funktio an sich funzt auch, wandelt schön alles um. aber eine Frage hätte ich da noch.

Ich habe ja Rondex folgendermassen defeniert :

Code
Function Roundex (Byval searchValue As String) As String

wenn ich in einer Suche , folgendermaßen diesen Code hineinschreibe, was passiert ? :

Code
If Roundex(Cstr(docCol.GetItemValue(searchField)(0))) = Roundex(Cstr(docSearch.GetItemValue(searchField)(0))) Then


Wird nun der searchValue 2x verglichen oder über gebe ich ihm wirklich die 2 verschiedenen Items ?
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Problem
« Antwort #19 am: 15.01.07 - 17:16:16 »
Und noch was . im moment schmeisst er mir in der Zeile einen Fehler mit der Meldung "Illegal Use function call"

Code
	If (Asc(char) < Asc("A")) Or (Asc(char) > Asc("Z")) Then


WARUM ZUM TEUFEL ?????
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz