Thread View: pl.comp.bazy-danych.msaccess
5 messages
5 total messages
Started by Jacek
Fri, 02 Sep 2016 10:24
Do BraZby'ego.
Author: Jacek
Date: Fri, 02 Sep 2016 10:24
Date: Fri, 02 Sep 2016 10:24
58 lines
2761 bytes
2761 bytes
Cześć Zbyszku.
Pisałem na mejla, ale wrócił.
Pozwolę sobie zamieścić tutaj.
Napisałem taki prosty programik do robienia archiwizacji.
Pierwotnie używałem Shell(xcopy…), ale że folderów Buchaltera jest jakieś
80, to uruchamiało się tyle ‘hostcon.exe’ i mój
komunikat o skończonym kopiowaniu był nieprawdziwy.
Próbuję ze scripting, ale mi się wywala.
Ścieżka do plików źródłowych istnieje, tworzy się pierwszy katalok poprzez
MkDir, ale samo kopiowanie wywala błąd.
P.S. Jako że baza Płatnika i pliki Rewizora nie są duże, to stosuję Shell.
Oto kod:
Private Sub Polecenie2_Click()
DoCmd.Hourglass True
Dim fobj As Object
Set fobj = CreateObject("Scripting.FileSystemObject")
Dim Data As String, s As String, d As String
Data = Format(Date, "yyyy-MM-dd")
If Dir("G:\" & Data & "\", vbDirectory) <> "." Then
MkDir ("G:\" & Data)
MkDir ("G:\" & Data & "\Platnik")
MkDir ("G:\" & Data & "\Rewizor")
MkDir ("G:\" & Data & "\Buchalter")
End If
q = Shell("Xcopy P:\Baza G:\" & Data & "\Platnik\ /E /Y /H", vbHide)
q = Shell("Xcopy R:\ G:\" & Data & "\Rewizor\ /E /Y /H", vbHide)
Dim db As Database
Set db = CurrentDb
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("Buchalter")
rs.MoveLast
rs.MoveFirst
For x = 1 To rs.RecordCount
If rs.Fields("Archiwizowac") = True Then
Kat = rs.Fields("Katalog")
MkDir ("G:\" & Data & "\Buchalter\" & Kat)
k = "Xcopy F:\Buch\" & Kat & " G:\" & Data & "\Buchalter\" & Kat &
\ /E /Y /H"
s = "F:\Buch\" & Kat & "\"
d = "G:\" & Data & "\Buchalter\" & Kat & "\"
fobj.CopyFolder s, d, True ' tu się wywala, że nie znalazł ścieżki
Exit For
'q = Shell(k, vbHide)
'Sleep (1000)
qq = SysCmd(acSysCmdSetStatus, Kat)
End If
rs.MoveNext
Next
inf = MsgBox("Archiwizacja wykonana pomyślnie.", vbOKOnly, "UWAGA")
DoCmd.Hourglass False
End Sub
Re: Do BraZby'ego.
Author: Smyk
Date: Fri, 02 Sep 2016 14:02
Date: Fri, 02 Sep 2016 14:02
28 lines
1925 bytes
1925 bytes
Jacek wrote at Fr 02.09.2016 12:24:
> Cześć Zbyszku.
Jam co prawda nie Zbyszek, ale pozwolę sobie zabrać głos ;)
> Set rs = db.OpenRecordset("Buchalter")
> rs.MoveLast
> rs.MoveFirst
> For x = 1 To rs.RecordCount
> If rs.Fields("Archiwizowac") = True Then
> Kat = rs.Fields("Katalog")
> MkDir ("G:\" & Data & "\Buchalter\" & Kat)
> k = "Xcopy F:\Buch\" & Kat & " G:\" & Data & "\Buchalter\" & Kat &
> \ /E /Y /H"
> s = "F:\Buch\" & Kat & "\"
> d = "G:\" & Data & "\Buchalter\" & Kat & "\"
> fobj.CopyFolder s, d, True ' tu się wywala, że nie znalazł ścieżki
> Exit For
> 'q = Shell(k, vbHide)
> 'Sleep (1000)
> qq = SysCmd(acSysCmdSetStatus, Kat)
> End If
> rs.MoveNext
> Next
Czy masz w polu "Katalog" tabeli "Buchalter" wartości które zawierają spację
?
Re: Do BraZby'ego.
Author: Jacek
Date: Fri, 02 Sep 2016 14:40
Date: Fri, 02 Sep 2016 14:40
32 lines
2016 bytes
2016 bytes
Dnia Fri, 02 Sep 2016 16:02:07 +0200, Smyk napisał(a):
> Jacek wrote at Fr 02.09.2016 12:24:
>
>> Cześć Zbyszku.
>
> Jam co prawda nie Zbyszek, ale pozwolę sobie zabrać głos ;)
>
>> Set rs = db.OpenRecordset("Buchalter")
>> rs.MoveLast
>> rs.MoveFirst
>> For x = 1 To rs.RecordCount
>> If rs.Fields("Archiwizowac") = True Then
>> Kat = rs.Fields("Katalog")
>> MkDir ("G:\" & Data & "\Buchalter\" & Kat)
>> k = "Xcopy F:\Buch\" & Kat & " G:\" & Data & "\Buchalter\" & Kat &
>> \ /E /Y /H"
>> s = "F:\Buch\" & Kat & "\"
>> d = "G:\" & Data & "\Buchalter\" & Kat & "\"
>> fobj.CopyFolder s, d, True ' tu się wywala, że nie znalazł ścieżki
>> Exit For
>> 'q = Shell(k, vbHide)
>> 'Sleep (1000)
>> qq = SysCmd(acSysCmdSetStatus, Kat)
>> End If
>> rs.MoveNext
>> Next
>
> Czy masz w polu "Katalog" tabeli "Buchalter" wartości które zawierają spację
> ?
Nie. Zwróć uwagę, że ciapki są odpowiednie.
Re: Do BraZby'ego.
Author: Zbigniew Bratko
Date: Sat, 03 Sep 2016 21:00
Date: Sat, 03 Sep 2016 21:00
84 lines
3536 bytes
3536 bytes
W dniu 2016-09-02 o 12:24, Jacek pisze:
> Cześć Zbyszku.
>
> Pisałem na mejla, ale wrócił.
> Pozwolę sobie zamieścić tutaj.
>
> Napisałem taki prosty programik do robienia archiwizacji.
> Pierwotnie używałem Shell(xcopy…), ale że folderów Buchaltera jest jakieś
> 80, to uruchamiało się tyle ‘hostcon.exe’ i mój
> komunikat o skończonym kopiowaniu był nieprawdziwy.
>
> Próbuję ze scripting, ale mi się wywala.
> Ścieżka do plików źródłowych istnieje, tworzy się pierwszy katalok poprzez
> MkDir, ale samo kopiowanie wywala błąd.
>
> P.S. Jako że baza Płatnika i pliki Rewizora nie są duże, to stosuję Shell.
>
> Oto kod:
Ciężko jest analizować kod, bez przykładowych plików, folderów, tabeli itp.
Dla porządku użyłbym instrukcji Option Explicit
w celu wymuszenia jawnej deklaracji zmiennych.
Poniższe zmienne nie są zadeklarowane
q, x, kat, k, qq, inf
>
> Private Sub Polecenie2_Click()
> DoCmd.Hourglass True
> Dim fobj As Object
> Set fobj = CreateObject("Scripting.FileSystemObject")
> Dim Data As String, s As String, d As String
> Data = Format(Date, "yyyy-MM-dd")
> If Dir("G:\" & Data & "\", vbDirectory) <> "." Then
> MkDir ("G:\" & Data)
> MkDir ("G:\" & Data & "\Platnik")
> MkDir ("G:\" & Data & "\Rewizor")
> MkDir ("G:\" & Data & "\Buchalter")
> End If
> q = Shell("Xcopy P:\Baza G:\" & Data & "\Platnik\ /E /Y /H", vbHide)
> q = Shell("Xcopy R:\ G:\" & Data & "\Rewizor\ /E /Y /H", vbHide)
>
[...]
> For x = 1 To rs.RecordCount
> If rs.Fields("Archiwizowac") = True Then
> Kat = rs.Fields("Katalog")
> MkDir ("G:\" & Data & "\Buchalter\" & Kat)
> k = "Xcopy F:\Buch\" & Kat & " G:\" & Data & "\Buchalter\" & Kat &
> \ /E /Y /H"
Powyższa linijka chyba jest zbędna, jeśli nie to powinna mieć postać:
k = Shell("Xcopy F:\Buch\" & kat & " G:\" & Data &
"\Buchalter\" & kat & "\ /E /Y /H")
gdyż po zadeklarowaniu zmiennej k jako typ Long dostaję błąd nr 13 Type
Mismath.
Bez użycia instrukcji Option Explicit zmienna k jest Typu Variant i
przypisywany do niej ciąg znaków "Xcopy F: ..... \ /E /Y /H" jest jak
najbardziej prawidłowy, tyle tylko że nie dostajesz informacji, czy ta
linijka w ogóle zadziałała.
> s = "F:\Buch\" & Kat & "\"
> d = "G:\" & Data & "\Buchalter\" & Kat & "\"
Spróbuj, czy zadziała ścieżka 's' bez ostatniego backslash'a:
d = "G:\" & Data & "\Buchalter\" & Kat & ""
fobj.CopyFolder s, d, True
[...]
> End Sub
>
--
Pozdrowienia
BraZby
www.faq.accdb.pl
www.accdb.pl
Re: Do BraZby'ego.
Author: Jacek
Date: Sat, 10 Sep 2016 04:47
Date: Sat, 10 Sep 2016 04:47
81 lines
3749 bytes
3749 bytes
Dnia Sat, 3 Sep 2016 23:00:00 +0200, Zbigniew Bratko napisał(a):
> W dniu 2016-09-02 o 12:24, Jacek pisze:
>> Cześć Zbyszku.
>>
>> Pisałem na mejla, ale wrócił.
>> Pozwolę sobie zamieścić tutaj.
>>
>> Napisałem taki prosty programik do robienia archiwizacji.
>> Pierwotnie używałem Shell(xcopy…), ale że folderów Buchaltera jest jakieś
>> 80, to uruchamiało się tyle ‘hostcon.exe’ i mój
>> komunikat o skończonym kopiowaniu był nieprawdziwy.
>>
>> Próbuję ze scripting, ale mi się wywala.
>> Ścieżka do plików źródłowych istnieje, tworzy się pierwszy katalok poprzez
>> MkDir, ale samo kopiowanie wywala błąd.
>>
>> P.S. Jako że baza Płatnika i pliki Rewizora nie są duże, to stosuję Shell.
>>
>> Oto kod:
>
> Ciężko jest analizować kod, bez przykładowych plików, folderów, tabeli itp.
>
> Dla porządku użyłbym instrukcji Option Explicit
> w celu wymuszenia jawnej deklaracji zmiennych.
>
> Poniższe zmienne nie są zadeklarowane
> q, x, kat, k, qq, inf
>
>>
>> Private Sub Polecenie2_Click()
>> DoCmd.Hourglass True
>> Dim fobj As Object
>> Set fobj = CreateObject("Scripting.FileSystemObject")
>> Dim Data As String, s As String, d As String
>> Data = Format(Date, "yyyy-MM-dd")
>> If Dir("G:\" & Data & "\", vbDirectory) <> "." Then
>> MkDir ("G:\" & Data)
>> MkDir ("G:\" & Data & "\Platnik")
>> MkDir ("G:\" & Data & "\Rewizor")
>> MkDir ("G:\" & Data & "\Buchalter")
>> End If
>> q = Shell("Xcopy P:\Baza G:\" & Data & "\Platnik\ /E /Y /H", vbHide)
>> q = Shell("Xcopy R:\ G:\" & Data & "\Rewizor\ /E /Y /H", vbHide)
>>
>
> [...]
>
>> For x = 1 To rs.RecordCount
>> If rs.Fields("Archiwizowac") = True Then
>> Kat = rs.Fields("Katalog")
>> MkDir ("G:\" & Data & "\Buchalter\" & Kat)
>> k = "Xcopy F:\Buch\" & Kat & " G:\" & Data & "\Buchalter\" & Kat &
>> \ /E /Y /H"
>
> Powyższa linijka chyba jest zbędna, jeśli nie to powinna mieć postać:
> k = Shell("Xcopy F:\Buch\" & kat & " G:\" & Data &
> "\Buchalter\" & kat & "\ /E /Y /H")
> gdyż po zadeklarowaniu zmiennej k jako typ Long dostaję błąd nr 13 Type
> Mismath.
>
> Bez użycia instrukcji Option Explicit zmienna k jest Typu Variant i
> przypisywany do niej ciąg znaków "Xcopy F: ..... \ /E /Y /H" jest jak
> najbardziej prawidłowy, tyle tylko że nie dostajesz informacji, czy ta
> linijka w ogóle zadziałała.
>
>
>> s = "F:\Buch\" & Kat & "\"
>> d = "G:\" & Data & "\Buchalter\" & Kat & "\"
>
> Spróbuj, czy zadziała ścieżka 's' bez ostatniego backslash'a:
>
> d = "G:\" & Data & "\Buchalter\" & Kat & ""
>
> fobj.CopyFolder s, d, True
> [...]
>
>> End Sub
>>
To był ten ostatni łamaniec w zmiennej s, dzięki.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads