Hi Gerd,
War das besser beschrieben?
fast.
Was Du bisher nicht geschrieben hast, die Pfade, die da kommen und durch die Endung .yes erweitert werden sollen, haben die denn überhaupt eine Endung? Wenn nein, ist das zuverlässig?
Einfach ein .yes anhängen, ohne erst zu prüfen was da steht, ist ja am Einfachsten. Wenn da aber schon eine Endung steht, z.B. ‚Test.txt‘ dann wird durch einfaches Anhängen daraus ‚Test.txt.yes‘, was u.U. falsch ist.
Möchtest Du das nur blind angehängt haben, oder ist eine Prüfung und das Ersetzen von allem, was nach einem Punkt kommt richtig?
Nur mit Anhängen würde der Code dann so aussehen, ob das richtig ist, kannst nur Du wissen.
Gruß Rainer
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Dim objRS As ADODB.Recordset
Dim objConnection As ADODB.Connection
Dim Feld() As String
Dim Pfd() As String
Private Sub Befehl0\_Click()
Dim i As Integer
OpenDB
strSQL = "SELECT [Sds-task].\* FROM [Sds-task]"
OpenRS strSQL
Transfer "c:\server1\sds-task.lst"
Transfer "c:\server2\sds-task.lst"
Transfer "c:\server3\sds-task.lst"
Transfer "c:\server4\sds-task.lst"
objRS.Close
strSQL = "SELECT DISTINCT [Sds-task].[SDS-Typ], [Sds-task].[SDS-Name], [Sds-task].[CDS-ID], [Sds-task].Datum From [Sds-task] WHERE ((([Sds-task].[SDS-Typ]) Like 'allusers'));"
OpenRS strSQL
objRS.MoveFirst
ReDim Pfd(i)
While objRS.EOF = False
ReDim Preserve Pfd(i)
Pfd(i) = objRS("SDS-Name")
i = i + 1
objRS.Movenext
Wend
objRS.Close
objConnection.Close
Sync
End Sub
Private Sub Transfer(ByVal Datei As String)
Dim ff As Integer, Zl As String
Dim Fld() As String, i As Integer
ff = FreeFile
Open Datei For Input As #ff
While Not EOF(ff)
Line Input #ff, Zl
Fld = Split(Zl, " ")
objRS.AddNew
For i = 0 To 3
objRS(i) = Replace(Fld(i), """", "")
Next
objRS.Update
Wend
Close #ff
End Sub
Private Sub OpenDB()
Dim strSQL As String
Dim DB As String
DB = "c:\SDS.mdb"
Set objConnection = New ADODB.Connection
With objConnection
.CursorLocation = adUseClient
.Mode = adModeShareDenyNone
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = DB
.Open
End With
End Sub
Private Sub OpenRS(ByVal strSQL As String)
Set objRS = New ADODB.Recordset
With objRS
Set .ActiveConnection = objConnection
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Source = strSQL
Call .Open
End With
End Sub
Private Sub QuickSort(ByVal LB As Long, ByVal UB As Long)
Dim P1 As Long, P2 As Long, Ref As String, TEMP As String
P1 = LB
P2 = UB
Ref = Feld((P1 + P2) / 2)
Do
Do While (Feld(P1) Ref)
P2 = P2 - 1
Loop
If P1 P2)
If LB Zl Then
Tmp(n) = Feld(i)
n = n + 1
Zl = Feld(i)
End If
Next
ReDim Feld(n - 1)
For i = 0 To n - 1
Feld(i) = Tmp(i)
Next
End Sub
Private Sub Sync()
Dim Txt As String, Daten As String
Dim i As Integer, c As Integer, ff As Integer, l As Long
Dim Server(3) As String, Pfad As String, Pos As Integer
Server(0) = "c:\Server1\"
Server(1) = "c:\Server2\"
Server(2) = "c:\Server3\"
Server(3) = "c:\Server4\"
ff = FreeFile
For i = LBound(Pfd) To UBound(Pfd)
Daten = ""
For c = 0 To 3
Pfad = Server(c) + Pfd(i) + ".yes"
If PathFileExists(Pfad) Then
l = FileLen(Pfad)
Txt = Space(l)
Open Pfad For Binary As #ff
Get #ff, , Txt
Close #ff
Daten = Daten + Txt
End If
Next
If Trim(Daten) "" Then
Feld = Split(Daten, vbCrLf)
QuickSort LBound(Feld), UBound(Feld)
Clean
Daten = Join(Feld, vbCrLf)
For c = 0 To 3
Pfad = Server(c) + Pfd(i) + ".yes"
Open Pfad For Output As #ff
Print #ff, Daten
Close #ff
Next
End If
Next
End Sub