Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : VB Script - Frage zu einer Methode


Choco
2006-08-04, 15:54:38
Ich möchte einen Filter setzen bzw. löschen.

Weiß aber nicht, wie die Befehlszeile aussehen muss, bzw. wie die Werte nach "Setfilter" aussehen müssen.

Im Anhang ein Auschnitt der der Anleitung als PDF-Datei.
Vielleicht kann mir wer helfen.

Thx. Choco

Sephiroth
2006-08-04, 17:39:03
zum Beispiel so (inkl. Rückgabewert)
CONST TM_FILTER_HOSTDB = 1
CONST TM_FILTER_HOSTRECID = 2
CONST TM_FILTER_USER = 4
DIM returnValue

returnValue = SetFilter(TM_FILTER_HOSTDB, "Pfad-und-name-zur-DB", "datensatz-nummer", "benutezrname")
wobei du für die Konstanten auch direkt deren Wert beim Aufruf einsetzen kannst

Choco
2006-08-04, 18:09:36
Ok, vielen Dank!

Da wäre ich durch probieren nie drauf gekommen. =)

Choco
2006-08-04, 23:22:44
So, bin gerade am weitermachen mit meinem Script.

Ich komm jetzt leider noch nicht ganz klar, was mir die Konstanten bringen.

Ich will den kompletten Filter löschen.

Was muss ich dazu eingeben?

Mein Objekt habe ich schon

On Error Resume Next
Set oTM = GetObject(, "TMngr.Application")
If Err.Number <> 0 Then
Err.Clear
Set oTM = CreateObject("TMngr.Application")
End If

Dadurch das ich den Befehl "GetObject" nehme, sind die Filter noch aktiv.

Wie lösche ich die?

oTM.setFilter .... ?

Sephiroth
2006-08-05, 16:36:38
Die Konstanten bestimmen wonach (die drei String-Paramer) du Filtern willst.

Worum geht es denn überhaupt?

Kann man den Filter nicht auf "" oder auf die gesamte DB mit TM_FILTER_HOSTDB und dem entsprechenden String für die HostDB zurücksetzen?

Choco
2006-08-05, 18:51:48
Ja, so wird das wohl gehen.

Aber ich check ums verrecken nicht, wie die genaue Anweisung lauten muss.

'--------------------------------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------------------------
'TERMINE
'--------------------------------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------------------------

'Variablen setzen
Dim oTM, oTermin, oAmw, oAmwDB
Dim oAufgabe, oTermine, sTermin
Dim sDatensatzID, e, Betreff, Zaehleraufgabe
Dim j1,j2,j3,j4,j5,j6,j7,j8,j9,j10 'For Next Schleifen
Dim t1,t2,t3,t4,t5,t6,t7,t8,t9,t10 'Zum Auslesen für den Betreff
Dim u1,u2,u3,u4,u5,u6,u7,u8,u9 'UniqueID der Bereits gefundenen Termine. Damit keine Doppelt gefunden werden.
Dim Datumtermin1, Datumtermin2, Datumtermin3, Datumtermin4, Datumtermin5, Datumtermin6, Datumtermin7, Datumtermin8
Dim Datumtermin9, Datumtermin10 'nimmt immer das Datum des niedrigsten gefundenen Termines an.
Dim DatensatzKunden

DatensatzKunden = "C:\ADRESS MANAGER 2001\DATENBANKEN\KUNDEN.DBF"



' Kontrollieren ob time manager bereits laeuft
On Error Resume Next
Set oTM = GetObject(, "TMngr.Application")
If Err.Number <> 0 Then
Err.Clear
Set oTM = CreateObject("TMngr.Application")
End If

On Error GoTo 0



CONST TM_FILTER_HOSTDB = 1
CONST TM_FILTER_HOSTRECID = 2
CONST TM_FILTER_USER = 4
DIM returnValue

returnValue = SetFilter(TM_FILTER_HOSTDB "C:\ADRESS MANAGER 2001\DATENBANKEN\KUNDEN.DBF" "" "")

' Erstellen der benötigten Objekte
Set oAmw = CreateObject("amw.Application")
Set oAmwDB = oAmw.CurrentDatabase


'DatensatzID auslesen
sDatensatzID = oAmwDB.GetContentsByName("RECORDID")


Set oTermine = oTM.Appointments


sTermin= "" 'Terminfeld im Adressmanager leeren

'--------------------------------------------------------------------------------------------------------------
'Termin 1
'--------------------------------------------------------------------------------------------------------------

Datumtermin1= date + 50000

For j1=1 To oTermine.Count

Set oTermin = oTermine.Item(j1)

If oTermin.HostRecordID - sDatensatzID = 0 AND oTermin.HostDatabase = DatensatzKunden Then
If DateDiff("d", datumtermin1, oTermin.Start) < 0 then
datumtermin1 = oTermin.Start
t1 = oTermin.Subject
u1 = oTermin.UniqueID
End If

End If

Next

If datumtermin1 <> date + 50000 then

sTermin = sTermin & left(datumtermin1,10) & " " & t1 & vbCrLf



So sieht das Script im Moment aus bei mir.
Diese "TMngr.Application" ist also das Object, auf dem der Filter wirken soll.
Aber so ganz klappt das nicht. Ich weiß nicht genau, wie ich den Befehl "SetFilter" eben dazu bringe, auf dem TMngr.Application zu wirken.

Choco
2006-08-05, 19:50:48
Ich hänge jetzt nochmal das ganze Script ran.

Die Stelle wo´s hackt ist ziemlich weit oben. Hab´s markiert.

Sephiroth
2006-08-05, 20:02:09
Ich weiß nicht genau, wie ich den Befehl "SetFilter" eben dazu bringe, auf dem TMngr.Application zu wirken.
Dann muß der Aufruf auch oTM.SetFilter() lauten, wenn die Methode SetFilter eine Methode dieses Objekts ist.

Choco
2006-08-05, 21:23:16
Ok.

Bin jetzt gerade zu Hause, kann also leider nicht mehr testen.

Aber das gesamte müsste dann in etwa so aussehen, oder?

CONST TM_FILTER_HOSTDB = 1
CONST TM_FILTER_HOSTRECID = 2
CONST TM_FILTER_USER = 4

oTM.SetFilter(TM_FILTER_HOSTDB, "C:\ADRESS MANAGER 2001\DATENBANKEN\KUNDEN.DBF", "", "")


Richtig so?