Thread View: pl.comp.bazy-danych.msaccess
5 messages
5 total messages
Started by Jacek
Fri, 02 Sep 2016 12:24
Do BraZby'ego.
Author: Jacek
Date: Fri, 02 Sep 2016 12:24
Date: Fri, 02 Sep 2016 12:24
57 lines
1918 bytes
1918 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 16:02
Date: Fri, 02 Sep 2016 16:02
27 lines
852 bytes
852 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 16:40
Date: Fri, 02 Sep 2016 16:40
31 lines
989 bytes
989 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 23:00
Date: Sat, 03 Sep 2016 23:00
83 lines
2577 bytes
2577 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 06:47
Date: Sat, 10 Sep 2016 06:47
80 lines
2753 bytes
2753 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