Betrifft: ab orgAnice CRM 2008
Frage:
Wie kann man Datensätze markieren, die ein Dokument eines bestimmten Typs beinhalten? Z.B. alle Aktivitäten, die ein Word-Dokument beinhalten?
Lösung:
Es ist nicht möglich die Aufgabenstellung mit dem Markierungs-Assistenten zu lösen, da es innerhalb von orgBasic keine Möglichkeit gibt auf den Dokumententyp bzw. die Dateiendung zuzugreifen. Wir müssen ein VBA-Makro zu Hilfe ziehen:
[php]
Sub MarkDoc()
‚ Markiert in der Tabelle Aktivitäten alle Datensätze,
‚ die ein Word-Dokument (mit der Endung .doc) beinhalten
Dim tbl As OrgDbServer31.Table
Dim doc As OrgDbServer31.Document
Set tbl = Database.Tables("Aktivitaeten")
With tbl
.Indexes.SetActiveIndex "ID"
.UnmarkAll
.GoTop
Do While Not .EOF
Set doc = tbl.Fields("Dokument").value
If Not doc Is Nothing Then
If doc.DefaultExtension = ".doc" Then
.SetMark True
End If
End If
.Skip
Loop
End With
End Sub
[/php]
In bestimmten Fällen kann es gewünscht sein, Dokumente eine bestimmten Typs als externe Dokumente abzulegen. Hier eine erweiterte Version der obigen Prozedur, die die gefundenen Dokumente als externe Dokumente ablegt:
[php]
Sub MoveDocTypeToExtern(psType As String, psTableName As String, psPath As String, psFileName As String)
‚ übergebenen Dokumenttyp von intern nach extern.
‚ psPath mit abschliessendem "\" angeben!
‚ Der in psPath angegebene Pfad muss existieren
Dim tbl As OrgDbServer31.Table
Dim doc As OrgDbServer31.Document
Dim sPath As String
On Error GoTo ErrHandler
Set tbl = Database.Tables(psTableName)
With tbl
.Indexes.SetActiveIndex "ID", ORGDB_NAV_NOEVENTS
.UnmarkAll ORGDB_NAV_NOEVENTS
.GoTop ORGDB_NAV_NOEVENTS + ORGDB_NAV_NORELATIONS
Do While Not .EOF
Set doc = tbl.Fields("Dokument").value
If Not doc Is Nothing Then
If doc.DefaultExtension = psType Then
.SetMark True
sPath = psPath & psFileName & " " & .Fields("ID").value & doc.DefaultExtension
doc.SaveAs sPath
Set doc = Database.Documents.CreateLink(sPath)
tbl.Fields("Dokument").value = doc
.Write
End If
End If
.Skip 1, ORGDB_NAV_NOEVENTS + ORGDB_NAV_NORELATIONS
Loop
End With
Exit Sub
ErrHandler:
gErrors.DisplayError Hex(Err.Number) & ", " & Err.Description & ", MoveDocTypeToExtern, Tabelle: " & psTableName & ", ID: " & tbl.Fields("ID").value
End Sub
[/php]
Beispielaufruf:
MoveDocTypeToExtern „.doc“, „Aktivitaeten“, „D:\Test\“, „AktivitaetenID“
Vielen Dank an Herrn Kopplin von K+K Software E. + K. Kopplin GbR, dem Hersteller von KKMandant, für die Zurverfügungstellung des Quellcodes.
Was this helpful?
1 / 0