Thread View: pl.comp.bazy-danych.msaccess
49 messages
49 total messages
Started by Jan Koc
Mon, 21 Nov 2016 11:31
export kwerendy do pliku csv
Author: Jan Koc
Date: Mon, 21 Nov 2016 11:31
Date: Mon, 21 Nov 2016 11:31
31 lines
2334 bytes
2334 bytes
Witam
Od pewnego czasu boksuję się z wyeksportowaniem kwerendy "ExportDoDPD" do pliku csv (skoroszyt excela z polami rozdzielonymi średnikami)
próbowałem bezpośrednio
Specyfikacja exportu "Export11" do pliku tekstowego .csv
DoCmd.TransferText acExportDelim, "Export11", "ExportDoDPD", "X:\Export_DPD.csv", True
albo najpierw wysyłam plik excelowski a potem go zamieniam na csv
Dim WrksheetName As String
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open "X:\Export_DPD.xls"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "ExportDoDPD", "X:\Export_DPD.xls", True
'Set xl = Nothing
' Dim AJ As String
' Dim AB As String
' AJ = "X:\Export_DPD.xls"
' AB = "X:\Export_DPD.csv"
' fSaveAsXlsx AJ, AB
i za każdym razem dostaję plik który jest nieczytany przez aplikację zawnętrzną.
Dopiero jak otworzę plik i polecę zapis, EXCEL poda komunikat, że zostaną utracone formuły a ja się na to zgodzę, to plik jest akceptowany.
Czy ktoś ma jakiś pomysł ?
Z góry dziękuję
Re: export kwerendy do pliku csv
Author: Prot
Date: Mon, 21 Nov 2016 14:34
Date: Mon, 21 Nov 2016 14:34
11 lines
1571 bytes
1571 bytes
Użytkownik "Jan Koc" <jan.kociumbas@gmail.com> napisał w wiadomości news:39d994b6-e28e-4fc2-a084-f06f776fd643@googlegroups.com... Od pewnego czasu boksuję się z wyeksportowaniem kwerendy "ExportDoDPD" do pliku csv (skoroszyt excela z polami rozdzielonymi średnikami) ... Czy ktoś ma jakiś pomysł ? Swego czasu wojowałem z importem poprzez VBA z csv do accessa 2003 i excela 2007 - bardzo poważne problemy miałem ... ze względu na kłopoty z kodowaniem znaków - u mnie rozwiązałem problem poprzez zastosowanie zestawu OEM 852 ;)
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 22 Nov 2016 08:33
Date: Tue, 22 Nov 2016 08:33
59 lines
2729 bytes
2729 bytes
Witaj,
Pomiń wywoływanie obiektu Excel.
Proponuję użyć procedurkę VBA:
"
Public Sub exportQuery(exportSQL As String)
Dim db As DAO.Database, qd As DAO.QueryDef
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
Set db = CurrentDb
'Check to see if querydef exists
For i = 0 To (db.QueryDefs.Count - 1)
If db.QueryDefs(i).Name = "tmpExport" Then
db.QueryDefs.Delete ("tmpExport")
Exit For
End If
Next i
Set qd = db.CreateQueryDef("tmpExport", exportSQL)
'Set intial filename
fd.InitialFileName = "export_" & Format(Date, "mmddyyy") & ".csv"
If fd.show = True Then
If Format(fd.SelectedItems(1)) <> vbNullString Then
DoCmd.TransferText acExportDelim, , "tmpExport", fd.SelectedItems(1), False
End If
End If
'Cleanup
db.QueryDefs.Delete "tmpExport"
db.Close
Set db = Nothing
Set qd = Nothing
Set fd = Nothing
End Sub
"
Wywoływana pod przyciskiem:
Public Sub someButton_Click()
Dim queryStr as String
'Store Query Here:
queryStr = "SELECT * FROM..."
Call exportQuery(queryStr)
End Sub
źródło:
http://stackoverflow.com/questions/14700192/vba-docmd-transfertext-exporting-query-to-csv-with-user-defined-file-path
MF
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 22 Nov 2016 09:00
Date: Tue, 22 Nov 2016 09:00
11 lines
1714 bytes
1714 bytes
> 2007 - bardzo poważne problemy miałem ... ze względu na kłopoty z kodowaniem > znaków - u mnie rozwiązałem problem poprzez zastosowanie zestawu OEM 852 ;) Tak jak pisał Prot Ustaw w funkcji transportu odpowiednie kodowanie: https://msdn.microsoft.com/en-us/library/office/ff835958.aspx https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx MF
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 22 Nov 2016 17:41
Date: Tue, 22 Nov 2016 17:41
18 lines
1963 bytes
1963 bytes
Dziękuję za podpowiedzi. Właśnie próbowałem zaimplementować kod MaciejaF i wyskoczył mi błąd przy deklaracji: Dim fd As FileDialog że ten typ jest niezdefiniowany. Podejrzewam, że brakuje mi jakiś referencji. A mam podłączone następujące: 1.Visual Basic For Application 2.Microsoft Access 15.0 Object Library 3.OLE Automation 4.Microsoft Office 15.Access database engine Object Library 5.Microsoft ActiveX Data Objects 6.0 Library 6.Microsoft ActiveX Data Objects Recordset 6.0 Library Czy powinienem coś dodać ? Jan
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 22 Nov 2016 18:57
Date: Tue, 22 Nov 2016 18:57
13 lines
1649 bytes
1649 bytes
> > Czy powinienem coś dodać ? > > Jan Widzę że powinna być referencja do: Microsoft Office 11.0 Object Library Pobróbuj zmieniając też w deklaracji fd: Dim fd As Office.FileDialog MF
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 22 Nov 2016 19:11
Date: Tue, 22 Nov 2016 19:11
21 lines
1882 bytes
1882 bytes
W dniu wtorek, 22 listopada 2016 19:57:58 UTC+1 użytkownik MaciejF napisał: > > > > Czy powinienem coś dodać ? > > > > Jan > > Widzę że powinna być referencja do: > Microsoft Office 11.0 Object Library > > > Pobróbuj zmieniając też w deklaracji fd: > Dim fd As Office.FileDialog > > MF Twoja wersja Accessa będzie miała: Microsoft Office 15.0 Object Library I tę podłącz. Powodzenia! MF
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 22 Nov 2016 19:44
Date: Tue, 22 Nov 2016 19:44
6 lines
1497 bytes
1497 bytes
Mam Office 2013 oj długo szukałem tej 11-stki. Dzięki za podpowiedź, biorę się do roboty. Jan
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 22 Nov 2016 20:07
Date: Tue, 22 Nov 2016 20:07
8 lines
1993 bytes
1993 bytes
Kod został skompilowany i wyskoczył błąd 3441 - Separator pól specyfikacji pliku tekstowego odpowiada separatorowi dziesiętnemu lub ogranicznikowi tekstu. ????? i jeszcze dopytam, czy w fd.SelectedItems(1) jest zawarta jakaś konkretna ścieszka dostępu? bo potrzebuję X:\Export_DPD.csv Jan
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 22 Nov 2016 20:14
Date: Tue, 22 Nov 2016 20:14
7 lines
1955 bytes
1955 bytes
> i jeszcze dopytam, czy w fd.SelectedItems(1) jest zawarta jakaś konkretna ścieszka dostępu? bo potrzebuję X:\Export_DPD.csv > To znaczy zanim wywala błąd pojawia się okienko dialogowe adresu pliku, ale czy to można zautomatyzować ? Jan
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 22 Nov 2016 20:46
Date: Tue, 22 Nov 2016 20:46
12 lines
2339 bytes
2339 bytes
wróć !!!! nie wpisałem specyfikacji exportu i stąd ten błąd. poprawka (czyli wpis) uruchomiła transfer tekstu, ale bez nagłówków kolumn. Jak dodałem na końcu True to nagłówki pojawiły się. OK. Niestety efekt był ten sam co w poprzednich moich metodach. Tzn. plik jest nieczytany przez aplikację zewnętrzną i dopiero otwarcie pliku i zapisanie jako Export..... .csv z konieczną akceptacją, że zostaną utracone formuły daje poprawny wynik. Przy czym cały czas plik jest identyfikowany jako plik w formacie wartości oddzielonymi przecinkami Excel Jan
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 22 Nov 2016 21:46
Date: Tue, 22 Nov 2016 21:46
7 lines
2136 bytes
2136 bytes
I mam jeszcze jeden pomysł. Ale brak mi wiedzy jak to zrobić. W tle po dokonaniu transferu, otworzyć utworzony plik csv, polecić zapisać go jako csv, wyrazić zgodę na utratę formuł (lub wyłączyć komunikaty) i na koniec go zamknąć. Pewnie nie jest to elegancka droga, ale cel zostałby osiągnięty. Jan
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Wed, 23 Nov 2016 06:23
Date: Wed, 23 Nov 2016 06:23
10 lines
2091 bytes
2091 bytes
skorzystaj z doświadczeń Prota: Zmień kod w swojej procedurce: DoCmd.TransferText acExportDelim,"Export11" , "tmpExport", fd.SelectedItems(1), True,,852 Dodałem kodowanie OEM Latin2 - 852 Zmień "Export11" jeżeli twoja specyfikacja eksportu jest inna MF
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Wed, 23 Nov 2016 06:25
Date: Wed, 23 Nov 2016 06:25
19 lines
2344 bytes
2344 bytes
W dniu środa, 23 listopada 2016 07:23:54 UTC+1 użytkownik MaciejF napisał: > skorzystaj z doświadczeń Prota: > Zmień kod w swojej procedurce: > > DoCmd.TransferText acExportDelim,"Export11" , "tmpExport", fd.SelectedItems(1), True,,852 > > > Dodałem kodowanie OEM Latin2 - 852 > Zmień "Export11" jeżeli twoja specyfikacja eksportu jest inna > > MF Tutaj zmień nazwę pliku: fd.InitialFileName = "export_" & Format(Date, "mmddyyy") & ".csv" np. fd.InitialFileName = "mojCSV_" & Format(Date, "Yyyymmdd") & ".csv" MF
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Wed, 23 Nov 2016 06:29
Date: Wed, 23 Nov 2016 06:29
2 lines
1874 bytes
1874 bytes
Już to zrobiłem, nie pomogło.Raczej chodzi o to że tworzony plik obsługuje formuły, a dopiero wyłączenie formuły daje poprawną wersję csv. Jan
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Wed, 23 Nov 2016 06:31
Date: Wed, 23 Nov 2016 06:31
1 lines
1960 bytes
1960 bytes
To już mam zrobione.
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Wed, 23 Nov 2016 06:43
Date: Wed, 23 Nov 2016 06:43
1 lines
2070 bytes
2070 bytes
Tzn kodowanie włączyłem i nie pomogło
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Mon, 28 Nov 2016 20:57
Date: Mon, 28 Nov 2016 20:57
44 lines
4281 bytes
4281 bytes
Wracam !!
Nie udaje mi się tego poprawnie zrobić.
Kod jest następujący:
Dim db As DAO.Database, qd As DAO.QueryDef
Dim fd As FileDialog
Dim exportSQL As String
Dim i As Integer
Set fd = Application.FileDialog(msoFileDialogSaveAs)
Set db = CurrentDb
exportSQL = "SELECT FIRMA.Nazwa AS S_Name, FIRMA.Ulica AS S_Address, FIRMA.Kod AS S_Zip, FIRMA.Miasto AS S_City, FIRMA.telefon AS S_Phone, FIRMA.e_mail AS S_Email, 'Grzegorz Kociumbas' AS S_Contact_Person, [Export DPD2].P_Cat_KP, [Export DPD2].P_Cat_5, [Export DPD2].P_Cat_10, [Export DPD2].P_Cat_20, [Export DPD2].P_Cat_30, [Export DPD2].P_Cat_50, [Export DPD2].R_Name, [Export DPD2].R_Address, [Export DPD2].R_Zip, [Export DPD2].R_City, [Export DPD2].R_Phone, [Export DPD2].R_Email, [Export DPD2].R_Contact_Person, [Export DPD2].P_Courier_Name, [Export DPD2].P_Comment, [Export DPD2].P_Content, [Export DPD2].A_Terminal, [Export DPD2].P_Cod, [Export DPD2].Time FROM FIRMA, [Export DPD2] WHERE ((([Export DPD2].Wydrukowane)=2));"
'Check to see if querydef exists
For i = 0 To (db.QueryDefs.Count - 1)
If db.QueryDefs(i).Name = "tmpExport" Then
db.QueryDefs.Delete ("tmpExport")
Exit For
End If
Next i
Set qd = db.CreateQueryDef("tmpExport", exportSQL)
'Set intial filename
fd.InitialFileName = "x:\export_" & Format(Date, "yyyymmdd") & ".csv"
If fd.show = True Then
If Format(fd.SelectedItems(1)) <> vbNullString Then
DoCmd.TransferText acExportDelim, "Export Specyfikacja eksportu", "tmpExport", fd.SelectedItems(1), True, , 852
End If
End If
'Cleanup
db.QueryDefs.Delete "tmpExport"
db.Close
Set db = Nothing
Set qd = Nothing
Set fd = Nothing
I jest poprawnie wykonywany, ale w efekcie otrzymuję plik podobno typu csv, ale dopiero po jego otwarciu i zapisaniu jako csv (tu informuje, że zostaną utracone formuły), plik jest poprawnie wczytywany przez aplikację zewnętrzną. Przed tą operacją plik jest nierozpoznawalny.
W związku z tym czy ktoś mógłby mi podrzucić dalszy ciąg tzn uruchomienie w tle tego pliku, zapisanie jako csv, wyłączenie komunikatu i na koniec zamknięcie excela ??
Jan
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 29 Nov 2016 13:45
Date: Tue, 29 Nov 2016 13:45
23 lines
2495 bytes
2495 bytes
W dniu poniedziałek, 28 listopada 2016 21:57:17 UTC+1 użytkownik Jan Koc napisał:
> Wracam !!
> Nie udaje mi się tego poprawnie zrobić.
> Kod jest następujący:
>
> 'Set intial filename
> fd.InitialFileName = "x:\export_" & Format(Date, "yyyymmdd") & ".csv"
Może zmień na:
fd.InitialFileName = "x:\export_DPD.txt"
Wypróbuj poniższe.
Dołącz swój zmodyfikowany kod:
Dim AJ As String
Dim AB As String
AJ = "X:\Export_DPD.txt"
AB = "X:\Export_DPD.csv"
fSaveAsXlsx AJ, AB
Pozdrawiam
MF
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 29 Nov 2016 15:35
Date: Tue, 29 Nov 2016 15:35
16 lines
2340 bytes
2340 bytes
zamiast
> Dim AJ As String
> Dim AB As String
> AJ = "X:\Export_DPD.txt"
> AB = "X:\Export_DPD.csv"
> fSaveAsXlsx AJ, AB
>
FileCopy "X:\Export_DPD.txt", "X:\Export_DPD.csv"
End Sub
Sprawdź to rozwiązanie
Pozdrawiam ponownie
MF
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 29 Nov 2016 16:29
Date: Tue, 29 Nov 2016 16:29
7 lines
2689 bytes
2689 bytes
Dziękuję za ponowną próbę ale nadal nie wychodzi. Wygląda na to, że Excel zawsze tworząc plik csv dodaje mu możliwość tworzenia formuł i dopiero zadeklarowanie aby zapisał plik jako csv daje możliwość pozbycia się tego "bagażu". Dlatego może dać mu tę możliwość i jak pisałem powyżej "tzn uruchomienie w tle tego pliku, zapisanie jako csv, wyłączenie komunikatu i na koniec zamknięcie excela " Jan
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 29 Nov 2016 16:50
Date: Tue, 29 Nov 2016 16:50
5 lines
2464 bytes
2464 bytes
https://support.office.com/pl-pl/article/Formatowanie-i-funkcje-programu-Excel-kt%C3%B3re-nie-s%C4%85-transferowane-do-innych-format%C3%B3w-plik%C3%B3w-8fdd91a3-792e-4aef-a5bb-46f603d0e585 To dziwne, gdyż plik txt czy csv jest po konwersji z Excela lub qwerendy pozbawiony formuł. MF
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 29 Nov 2016 16:51
Date: Tue, 29 Nov 2016 16:51
5 lines
2573 bytes
2573 bytes
https://support.office.com/pl-pl/article/Formatowanie-i-funkcje-programu-Excel-kt%C3%B3re-nie-s%C4%85-transferowane-do-innych-format%C3%B3w-plik%C3%B3w-8fdd91a3-792e-4aef-a5bb-46f603d0e585 To dziwne, gdyż plik txt czy csv jest po konwersji z Excela lub qwerendy pozbawiony formuł. MF
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 29 Nov 2016 17:30
Date: Tue, 29 Nov 2016 17:30
2 lines
2416 bytes
2416 bytes
A jak Pan wykona taką operację (txt na csv), to proszę sprawdzić jak u Pana zachowa się Excel, gdy poleci mu Pan "zapisz jako csv". U mnie informuje o utracie formuł. Może mam źle ustanowione jakieś właściwości exelowskie.. Jan
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Tue, 29 Nov 2016 18:05
Date: Tue, 29 Nov 2016 18:05
82 lines
5460 bytes
5460 bytes
W dniu wtorek, 29 listopada 2016 18:30:01 UTC+1 użytkownik Jan Koc napisał:
> A jak Pan wykona taką operację (txt na csv), to proszę sprawdzić jak u Pana zachowa się Excel, gdy poleci mu Pan "zapisz jako csv". U mnie informuje o utracie formuł. Może mam źle ustanowione jakieś właściwości exelowskie..
> Jan
Może konwersja musi być jawna a nie tylko przez zmianę rozszerzenia.
Wygrzebałem gdzieś jeszcze to:
1. Zapisz w Module swojego Accessa taką funkcję:
Sub txt2csv()
Dim fnam As String
Dim spath As String
Dim ftxt As String
Dim wb As Workbook
Dim cel As Range
Dim txts As String
spath = "X:\"
fnam = Dir(spath & "*.txt")
Do While fnam <> ""
Open spath & fnam For Input As #1
ftxt = Input(LOF(1), 1)
Close 1
ftxt = Replace(ftxt, "|", ",")
Open spath & Replace(UCase(fnam), ".TXT", ".csv") For Output As #1
Print #1, ftxt
Close 1
Set wb = Workbooks.Open(spath & Replace(UCase(fnam), ".TXT", ".csv"))
For Each cel In wb.Sheets(1).Range("A2:A" & wb.Sheets(1).Range("A2").End(xlDown).Row)
txts = Right("0" & cel, 8)
cel = CVDate(Left(txts, 2) & "/" & Mid(txts, 3, 2) & "/" & Right(txts, 4))
Next cel
wb.Close True
fnam = Dir
Loop
End Sub
xxxxxxxxx
2. zmodyfikowany kod pod przyciskiem:
Dim db As DAO.Database, qd As DAO.QueryDef
Dim fd As FileDialog
Dim exportSQL As String
Dim i As Integer
Set fd = Application.FileDialog(msoFileDialogSaveAs)
Set db = CurrentDb
exportSQL = "SELECT FIRMA.Nazwa AS S_Name, FIRMA.Ulica AS S_Address, FIRMA.Kod AS S_Zip, FIRMA.Miasto AS S_City, FIRMA.telefon AS S_Phone, FIRMA.e_mail AS S_Email, 'Grzegorz Kociumbas' AS S_Contact_Person, [Export DPD2].P_Cat_KP, [Export DPD2].P_Cat_5, [Export DPD2].P_Cat_10, [Export DPD2].P_Cat_20, [Export DPD2].P_Cat_30, [Export DPD2].P_Cat_50, [Export DPD2].R_Name, [Export DPD2].R_Address, [Export DPD2].R_Zip, [Export DPD2].R_City, [Export DPD2].R_Phone, [Export DPD2].R_Email, [Export DPD2].R_Contact_Person, [Export DPD2].P_Courier_Name, [Export DPD2].P_Comment, [Export DPD2].P_Content, [Export DPD2].A_Terminal, [Export DPD2].P_Cod, [Export DPD2].Time FROM FIRMA, [Export DPD2] WHERE ((([Export DPD2].Wydrukowane)=2));"
'Check to see if querydef exists
For i = 0 To (db.QueryDefs.Count - 1)
If db.QueryDefs(i).Name = "tmpExport" Then
db.QueryDefs.Delete ("tmpExport")
Exit For
End If
Next i
Set qd = db.CreateQueryDef("tmpExport", exportSQL)
'Set intial filename
fd.InitialFileName = "X:\export_" & Format(Date, "yyyymmdd") & ".txt"
If fd.show = True Then
If Format(fd.SelectedItems(1)) <> vbNullString Then
DoCmd.TransferText acExportDelim, "Export Specyfikacja eksportu", "tmpExport", fd.SelectedItems(1), True, , 852
End If
End If
'Cleanup
db.QueryDefs.Delete "tmpExport"
db.Close
Set db = Nothing
Set qd = Nothing
Set fd = Nothing
' jawnie konwertowane txt na csv
Call txt2csv
End Sub
Proszę spróbować jeszcze to.
MF
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Tue, 29 Nov 2016 20:41
Date: Tue, 29 Nov 2016 20:41
6 lines
2546 bytes
2546 bytes
Ok ale jutro. Teraz naprawiam piec, konkretnie komin. Jutro dam znać co wyszło. A tak przy okazji, na jakiej grupie exelowej można znaleść podobne przyjazne podejście jak tu gdzie jesteśmy? Jan
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Wed, 30 Nov 2016 05:28
Date: Wed, 30 Nov 2016 05:28
7 lines
2489 bytes
2489 bytes
wyrzuca mi błąd w funkcji przy deklaracji Dim wb As Workbook czy brakuje jakiś referencji (we wcześniejszych postachh wypisałem je) ? Jan
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Wed, 30 Nov 2016 06:54
Date: Wed, 30 Nov 2016 06:54
14 lines
3022 bytes
3022 bytes
W dniu środa, 30 listopada 2016 06:28:24 UTC+1 użytkownik Jan Koc napisał: > wyrzuca mi błąd w funkcji przy deklaracji > > Dim wb As Workbook > > czy brakuje jakiś referencji (we wcześniejszych postachh wypisałem je) ? > > Jan Referencja: Microsoft Excel Object Library przydatny link: http://stackoverflow.com/questions/5729195/how-to-refer-to-excel-objects-in-access-vba
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Wed, 30 Nov 2016 07:01
Date: Wed, 30 Nov 2016 07:01
42 lines
3877 bytes
3877 bytes
W dniu środa, 30 listopada 2016 07:54:35 UTC+1 użytkownik MaciejF napisał:
> W dniu środa, 30 listopada 2016 06:28:24 UTC+1 użytkownik Jan Koc napisał:
> > wyrzuca mi błąd w funkcji przy deklaracji
> >
> > Dim wb As Workbook
> >
> > czy brakuje jakiś referencji (we wcześniejszych postachh wypisałem je) ?
> >
> > Jan
>
> Referencja:
> Microsoft Excel Object Library
>
> przydatny link:
> http://stackoverflow.com/questions/5729195/how-to-refer-to-excel-objects-in-access-vba
Procedurka poprawiona
Sub txt2csv()
Dim fnam As String
Dim spath As String
Dim ftxt As String
Dim objExcelApp As Object
Dim wb As Object
Dim cel As Range
Dim txts As String
spath = "X:\"
fnam = Dir(spath & "*.txt")
Set objExcelApp = CreateObject("Excel.Application")
Do While fnam <> ""
Open spath & fnam For Input As #1
ftxt = Input(LOF(1), 1)
Close 1
ftxt = Replace(ftxt, "|", ",")
Open spath & Replace(UCase(fnam), ".TXT", ".csv") For Output As #1
Print #1, ftxt
Close 1
Set wb = objExcelApp.Workbooks.Open(spath & Replace(UCase(fnam), ".TXT", ".csv"))
wb.Close True
fnam = Dir
Loop
End Sub
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Wed, 30 Nov 2016 07:11
Date: Wed, 30 Nov 2016 07:11
24 lines
3514 bytes
3514 bytes
modyfikacja (sprawdziłem funkcję u siebie
Sub txt2csv()
Dim fnam As String
Dim spath As String
Dim ftxt As String
Dim objExcelApp As Object
Dim wb As Object
spath = "X:\"
fnam = Dir(spath & "*.txt")
Set objExcelApp = CreateObject("Excel.Application")
Do While fnam <> ""
Open spath & fnam For Input As #1
ftxt = Input(LOF(1), 1)
Close 1
ftxt = Replace(ftxt, "|", ",")
Open spath & Replace(UCase(fnam), ".TXT", ".csv") For Output As #1
Print #1, ftxt
Close 1
Set wb = objExcelApp.Workbooks.Open(spath & Replace(UCase(fnam), ".TXT", ".csv"))
wb.Close True
fnam = Dir
Loop
End Sub
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Wed, 30 Nov 2016 07:59
Date: Wed, 30 Nov 2016 07:59
8 lines
2964 bytes
2964 bytes
Prosze sprawdź jeszcze swoją kwerendę SQL: Po FROM nie ma złączeń i wygląda to na iloczyn kartezjański 2-ch tabel wprawdzie masz potem filtr w klauzuli WHERE niemniej sprawdź jeszcze raz poprawność napisanego SQLa. Pozdrawiam MF
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Wed, 30 Nov 2016 13:55
Date: Wed, 30 Nov 2016 13:55
28 lines
3528 bytes
3528 bytes
Uproszczenie procedurki w module:
Sub txt2csv()
Dim fnam As String
Dim spath As String
Dim ftxt As String
Dim objExcelApp As Object
Dim wb As Object
spath = "X:\"
fnam = Dir(spath & "*.txt")
Set objExcelApp = CreateObject("Excel.Application")
Do While fnam <> ""
Open spath & fnam For Input As #1
ftxt = Input(LOF(1), 1)
Close 1
ftxt = Replace(ftxt, "|", ";")
Open spath & Replace(UCase(fnam), ".TXT", ".csv") For Output As #1
Print #1, ftxt
Close 1
Set wb = objExcelApp.Workbooks.Open(spath & fnam)
wb.Close True
fnam = Dir
Loop
End Sub
/
MF
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Wed, 30 Nov 2016 18:01
Date: Wed, 30 Nov 2016 18:01
9 lines
3093 bytes
3093 bytes
Niestety. Procedura działa poprawnie, tworzy plik tekstowy i zamienia go na Excela csv, ale niestety z dopiero po otwarciu, zapisaniu jako csv i .......... Widać Excel ma wbudowaną strukturę przy tworzeniu pliku csv pozwalającą na używanie formuł i dopiero jasno zdeklarowane polecenie aby się tego "bagażu" pozbyć pozostawia plik "czystym" Jan chyba trzeba by uderzyć do jakiejś grupy excelowej ?
Re: export kwerendy do pliku csv
Author: Prot
Date: Wed, 30 Nov 2016 20:13
Date: Wed, 30 Nov 2016 20:13
52 lines
4018 bytes
4018 bytes
Użytkownik "Jan Koc" <jan.kociumbas@gmail.com> napisał w wiadomości
news:3752680b-e403-4a90-a64d-93c340596fed@googlegroups.com...
Niestety.
Procedura działa poprawnie, tworzy plik tekstowy i zamienia go na Excela
csv, ale niestety z dopiero po otwarciu, zapisaniu jako csv i ..........
Widać Excel ma wbudowaną strukturę przy tworzeniu pliku csv pozwalającą na
używanie formuł i dopiero jasno zdeklarowane polecenie aby się tego "bagażu"
pozbyć pozostawia plik "czystym"
Jan
chyba trzeba by uderzyć do jakiejś grupy excelowej ?
A czy nie prościej byłoby eksportować kwerendę do pliku xls, a potem dopiero
eksportować (czy zachować jako) csv ?
Przypominam sobie moje wojowanie z importem z plików tekstowych (dokładnie
to nie był csv lecz podobny format sta - stosowany przy wyciągach
bankowych) - też stosowałem różne kombinacje pośrednie i metodą prób i
błędów zastosowałem procedurę następującą: tworzyłem plik roboczy "dest"
oraz w tle plik źródłowy "temp" utworzony z "zaimportowanego" pliku
tekstowego sta. Jeśli do tego importu zastosowałem opcję Origin:=852 - plik
temp miał już "ogonkowy" - polski format i po kilku procedurach wykonanych
na stringach wyniki zapisywałem do pliku dest.
Dopiero z tak uformowanego pliku dest mogłem importować dane do accessa.
Kod VBA wyglądał w tym fragmencie tak:
Dim dWb As Workbook: Set dWb = ThisWorkbook
Dim sWb As Workbook
Dim dWks As Worksheet: Set dWks = dWb.Sheets("dest")
Dim sWks As Worksheet
dWks.Activate
Range("intro").Select
dWks.Range("intro").ClearContents
Workbooks.OpenText Filename:=strPathFile, Origin:=852, StartRow:=1 _
, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(0, 1)), _
TrailingMinusNumbers:=True
ActiveSheet.Name = "temp"
Set sWb = ActiveWorkbook
Set sWks = sWb.Sheets("temp")
ActiveSheet.UsedRange.Select
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Wed, 30 Nov 2016 20:21
Date: Wed, 30 Nov 2016 20:21
79 lines
3892 bytes
3892 bytes
W dniu 2016-11-21 o 12:31, Jan Koc pisze:
> Witam
> Od pewnego czasu boksuję się z wyeksportowaniem kwerendy "ExportDoDPD" do pliku csv (skoroszyt excela z polami rozdzielonymi średnikami)
> próbowałem bezpośrednio
>
> Specyfikacja exportu "Export11" do pliku tekstowego .csv
>
> DoCmd.TransferText acExportDelim, "Export11", "ExportDoDPD", "X:\Export_DPD.csv", True
>
Już prawie 3-ci tydzień mija na Waszej nieustającej walce z eksportem
kwerendy ExportDoDPD do pliku *.csv w oparciu o Specyfikacje eksportu o
nazwie "Export11".
Nie wiem, czy dobrze rozumiem Twój problem?
Masz w bazie danych MS Access jakowąś tabelę(e), na której(ych) opierasz
kwerendę ExportDoDPD. Dane do tabel(i) pobrałeś (zaimportowałeś) z pliku
Excela.
Korzystając z metody DoCmd.TransferSpreadsheet zapisujesz dane w pliku
X:\Export_DPD.csv w oparciu o specyfikację "Export11"
I dalej nie bardzo wiem o co chodzi. Jakieś formatowanie, utrata formuł,
jakiś plik .txt, jakieś Replace. Zamiany pliku *.txt (lub *.xls) na *.csv.
Moim skromnym zdaniem "CÓŚ" takiego powinno zadziałać prawidłowo:
DoCmd.TransferText acExportDelim, "Export11", "ExportDoDPD",
"X:\Export_DPD.csv", True
Może specyfikacja "Export11" jest do d... (no taka nie za zbytnio ;-))
Proponuję, byś utworzył nowa bazę, a w niej prostą tabelę o kilku polach:
np. Nazwisko, data urodzenia, miasto, wiek
zapisać w niej ze trzy rekordy i spróbować wyeksportować tabelę do pliku
*.csv, zapisując wcześniej specyfikację eksportu.
Potem otworzyć zapisany plik w Notatniku i popatrzeć co się zapisało i
czy taki plik czyta Excel.
Następny etap, to korzystając z metody DoCmd.TransferSpreadsheet zapisz
dane w pliku w oparciu o zapisana, "NOWĄ" specyfikację.
I znowu popatrz co się zapisało.
> albo najpierw wysyłam plik excelowski a potem go zamieniam na csv
>
> Dim WrksheetName As String
> Dim xl As Object
> Set xl = CreateObject("Excel.Application")
>
> xl.Workbooks.Open "X:\Export_DPD.xls"
> DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "ExportDoDPD", "X:\Export_DPD.xls", True
>
> 'Set xl = Nothing
>
> ' Dim AJ As String
> ' Dim AB As String
> ' AJ = "X:\Export_DPD.xls"
> ' AB = "X:\Export_DPD.csv"
> ' fSaveAsXlsx AJ, AB
>
Nie za bardzo rozumiem, o co chodziło Ci w zaremowanych linijkach.
Eksportujesz kwerendę "ExportDoDPD" do pliku "X:\Export_DPD.xls", a
potem zmieniasz rozszerzenie na *.csv i ????
> i za każdym razem dostaję plik który jest nieczytany przez aplikację zawnętrzną.
> Dopiero jak otworzę plik i polecę zapis, EXCEL poda komunikat, że zostaną utracone formuły a ja się na to zgodzę, to plik jest akceptowany.
Nie udało mi się wygenerować takiego komunikatu:
...że zostaną utracone formuły
Może więcej szczegółów.
--
Pozdrowienia
BraZby
www.faq.accdb.pl
www.accdb.pl
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Wed, 30 Nov 2016 21:11
Date: Wed, 30 Nov 2016 21:11
58 lines
2736 bytes
2736 bytes
W dniu 2016-11-30 o 21:21, Zbigniew Bratko pisze: > W dniu 2016-11-21 o 12:31, Jan Koc pisze: >> Witam >> Od pewnego czasu boksuję się z wyeksportowaniem kwerendy "ExportDoDPD" >> do pliku csv (skoroszyt excela z polami rozdzielonymi średnikami) >> próbowałem bezpośrednio >> >> Specyfikacja exportu "Export11" do pliku tekstowego .csv >> >> DoCmd.TransferText acExportDelim, "Export11", "ExportDoDPD", >> "X:\Export_DPD.csv", True >> Uczyniłem, jak proponowałem: > Proponuję, byś utworzył nowa bazę, a w niej prostą tabelę o kilku polach: > np. Nazwisko, data urodzenia, miasto, wiek > zapisać w niej ze trzy rekordy i spróbować wyeksportować tabelę do pliku > *.csv, zapisując wcześniej specyfikację eksportu. > Potem otworzyć zapisany plik w Notatniku i popatrzeć co się zapisało i > czy taki plik czyta Excel. Mój plik *.csv Excel czyta > Następny etap, to korzystając z metody DoCmd.TransferSpreadsheet zapisz > dane w pliku w oparciu o zapisana, "NOWĄ" specyfikację. > > I znowu popatrz co się zapisało. Zapisało mi się takie "CÓŚ": "ID";"Nazwisko";"Miasto";"DataUr";"Wiek" 1;"Kowalski";"Kraków";2010-11-30 00:00:00;6 2;"Nowak";"Lublin";2011-11-2 00:00:00;5 3;"Malinowski";"Warszawa";2000-11-2 00:00:00;16 Mój kod: Private Sub Polecenie0_Click() Dim strFullPath As String Const conFileNameCSV As String = "TestCsv.csv" Const conTblName As String = "tblTestCsv" Const conSpecyficationName As String = "MojaSpecyfikacja" strFullPath = CurrentProject.Path & "\" & conFileNameCSV DoCmd.TransferText acExportDelim, conSpecyficationName, conTblName, strFullPath, True End Sub Plik *.csv zapisany zostanie w katalogu bazy. -- Pozdrowienia BraZby www.faq.accdb.pl www.accdb.pl
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Thu, 01 Dec 2016 08:05
Date: Thu, 01 Dec 2016 08:05
25 lines
2396 bytes
2396 bytes
Jeżeli dobrze zrozumiałem Jana to chciałby zrzucić wynik kwerendy do pliku csv. Może najpierw utwórz tabelę tymczasową tmpTmpExpDPD. I z niej zrzucaj do pliku csv tak jak napisał Zbigniew Bratko. Popracuj nad prawidłową specyfikacją eksportu. Dla uproszczenia tylko 3 pola. strDel = "DELETE * FROM tblTmpExpDPD" strINS = "INSERT INTO tblTmpExpDPD (S_Name, S_Address, S_Zip) SELECT FIRMA.Nazwa AS S_Name, FIRMA.Ulica AS S_Address, FIRMA.Kod AS S_Zip FROM FIRMA, [Export DPD2] WHERE ((([Export DPD2].Wydrukowane)=2));" DoCmd.Execute strDel DoCmd.Execute strINS Dim strFullPath As String Const conFileNameCSV As String = "TestCsv.csv" Const conTblName As String = "tblTmpExpDPD" Const conSpecyficationName As String = "MojaSpecyfikacja" strFullPath = CurrentProject.Path & "\" & conFileNameCSV DoCmd.TransferText acExportDelim, conSpecyficationName, conTblName, strFullPath, True MF
Re: export kwerendy do pliku csv
Author: MaciejF
Date: Thu, 01 Dec 2016 08:14
Date: Thu, 01 Dec 2016 08:14
29 lines
2276 bytes
2276 bytes
poprawnie będzie tak: Dim db As Database Dim strDel As String Dim strINS As String Set db = CurrentDb strDel = "DELETE * FROM tblTmpExpDPD" strINS = "INSERT INTO tblTmpExpDPD (S_Name, S_Address, S_Zip) SELECT FIRMA.Nazwa AS S_Name, FIRMA.Ulica AS S_Address, FIRMA.Kod AS S_Zip FROM FIRMA, [Export DPD2] WHERE ((([Export DPD2].Wydrukowane)=2));" Db.Execute strDel Db.Execute strINS Dim strFullPath As String Const conFileNameCSV As String = "TestCsv.csv" Const conTblName As String = "tblTmpExpDPD" Const conSpecyficationName As String = "MojaSpecyfikacja" strFullPath = CurrentProject.Path & "\" & conFileNameCSV DoCmd.TransferText acExportDelim, conSpecyficationName, conTblName, strFullPath, True Poprzednio były błędy. MF
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Thu, 01 Dec 2016 09:50
Date: Thu, 01 Dec 2016 09:50
67 lines
3035 bytes
3035 bytes
W dniu 2016-11-30 o 22:11, Zbigniew Bratko pisze:
> W dniu 2016-11-30 o 21:21, Zbigniew Bratko pisze:
>> W dniu 2016-11-21 o 12:31, Jan Koc pisze:
>>> Witam
>>> Od pewnego czasu boksuję się z wyeksportowaniem kwerendy "ExportDoDPD"
>>> do pliku csv (skoroszyt excela z polami rozdzielonymi średnikami)
>>> próbowałem bezpośrednio
>>>
>>> Specyfikacja exportu "Export11" do pliku tekstowego .csv
>>>
>>> DoCmd.TransferText acExportDelim, "Export11", "ExportDoDPD",
>>> "X:\Export_DPD.csv", True
>>>
Być może najłatwiej będzie zaimportować Arkusz roboczy do tabeli,
utworzyć kwerendę pobierającą potrzebne dane i tą kwerendę wyeksportować
do pliku *.csv.
Call ImportFromExcel("tblTestCsvBis", CurrentProject.Path & "\" & _
"TestCsv.xlsx", "DaneTestCsv")
'___________________________________________________
Private Sub ImportFromExcel(strTableName As String, _
strFilePath As String, _
strWorksheet As String)
CurrentDb.Execute "DELETE * FROM " & strTableName
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, _
strTableName, strFilePath, True, strWorksheet & "$"
End Sub
i w poniższej procedurze zmienić wartość stałej Const conTblName As
String na "qryJakiasNazwa"
Najpierw zrób próbny eksport i zapisz specyfikację eksportu by z niej
skorzystać w procedurze.
Wszystko będzie miało sens jeżeli czynności są powtarzalne, tzn. dotyczą
takiego samego zestawu danych
>
>
> Mój kod:
>
> Private Sub Polecenie0_Click()
> Dim strFullPath As String
> Const conFileNameCSV As String = "TestCsv.csv"
> Const conTblName As String = "tblTestCsv"
> Const conSpecyficationName As String = "MojaSpecyfikacja"
>
> strFullPath = CurrentProject.Path & "\" & conFileNameCSV
> DoCmd.TransferText acExportDelim, conSpecyficationName, conTblName,
> strFullPath, True
>
> End Sub
>
> Plik *.csv zapisany zostanie w katalogu bazy.
>
--
Pozdrowienia
BraZby
www.faq.accdb.pl
www.accdb.pl
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Thu, 01 Dec 2016 10:32
Date: Thu, 01 Dec 2016 10:32
6 lines
2409 bytes
2409 bytes
Jeszcze raz. Problemem nie jest export z Accesa ale plik który powstaje po stronie Excela. Wszystkie dotychczasowe próby (te trzy tygodnie boksowania się z problemem) w wyniku tworzą poprawny plik Excel.csv . Problemem jest jego struktura, która zawiera możliwość tworzenia wewnątrz formuł. i dopiero otwarcie pliku i polecenie zapisania go jako csv likwiduje tę możliwość. Dopiero taki "czysty" plik jest czytany przez aplikację klienta (firma kurierska). Spróbujcie otworzyć nawet pusty plik xls zapisać go jako csv a (ja tak mam) otrzymacie komunikat że w wyniku tego procesu zostaną utacone formuły. I problem jest w tym, że tak samo jest z plikiem wyeksportowanym z Accesa. Mimo że to plik z rozszerzeniem csv, to dopiero procedura "zapisz jako ....csv" zapisuje plik jako csv bez "bagażu" potencjalnych formuł. Również pliki już "czyste" csv poddane procedurze "zapisz jako ...csv" w trakcie tego procesu informują o utracie formuł. A ja chciałem to zautomatyzować i nie mieć tej konieczności otwierania przygotowanego przez Accesa pliku. Jan
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Thu, 01 Dec 2016 17:10
Date: Thu, 01 Dec 2016 17:10
67 lines
3782 bytes
3782 bytes
W dniu 2016-12-01 o 11:32, Jan Koc pisze: > [...] Wszystkie dotychczasowe próby (te trzy tygodnie boksowania się z problemem) w wyniku tworzą poprawny plik Excel.csv . Problemem jest jego struktura, która zawiera możliwość tworzenia wewnątrz formuł. i dopiero otwarcie pliku i polecenie zapisania go jako csv likwiduje tę możliwość. Dopiero taki "czysty" plik jest czytany przez aplikację klienta (firma kurierska). Spróbujcie otworzyć nawet pusty plik xls zapisać go jako csv a (ja tak mam) otrzymacie komunikat że w wyniku tego procesu zostaną utacone formuły. Próba zapisu pustego, nowego skoroszytu skutkuje u mnie utworzeniem pustego pliku tekstowego z rozszerzenie *.csv, bez jakichkolwiek komunikatów. Również arkusz z danymi jest prawidłowo zapisany i prawidłowo otwierany przez Excela. > I problem jest w tym, że tak samo jest z plikiem wyeksportowanym z Accesa. Mimo że to plik z rozszerzeniem csv, to dopiero procedura "zapisz jako ....csv" zapisuje plik jako csv bez "bagażu" potencjalnych formuł. Plik *.csv zapisany przez MS Access "KluczID";"Nazwisko";"Miasto";"DataUr";"Wiek" 1;"Kowalski";"Kraków";2010-11-30 00:00:00;6 2;"Nowak";"Lublin";2011-11-2 00:00:00;5 3;"Malinowski";"Warszawa";2000-11-2 00:00:00;16 Plik *.csv zapisany przez MS Excel KluczID;Nazwisko;Miasto;DataUr;Wiek 1;Kowalski;Kraków;2010-11-30 00:00;6 2;Nowak;Lublin;2011-11-02 00:00;5 3;Malinowski;Warszawa;2000-11-02 00:00;16 > > Również pliki już "czyste" csv poddane procedurze "zapisz jako ...csv" w trakcie tego procesu informują o utracie formuł. > A ja chciałem to zautomatyzować i nie mieć tej konieczności otwierania przygotowanego przez Accesa pliku. Niestety, Excel to nie moja działka, więc nie mogę Ci pomóc. Spróbuj zadać pytanie na: http://www.coderscity.pl/forum46.html CIEKAWOSTKA. Spróbujcie zapisać jako plik *.csv arkusz w którym pierwsza komórka nazwana jest ID, lub zaczyna się od liter ID. Otrzymacie przykładowy plik *csv. ID;Nazwisko 1;Kowalski 2;Nowak i spróbujcie go otworzyć za pomocą Excela Pojawi się komunikat: Plik, który próbujesz otworzyć (nazwa pliku), ma inny format niż określony przez rozszerzenie pliku. Plik może być uszkodzony lub pochodzić z niezaufanego źródła ...bla bla bla A potem jeszcze kilka okienek z komunikatami. m.in. że jest to plik SYLK i nie może go załadować .... albo w pliku są błędy albo nie jest to plik SYLK .... Po prostu, pierwsza komórka nie może zaczynać się od ID Troszkę inaczej reaguje Excel, gdy pierwsza komórka nazwana jest np. IDentyfikator. -- Pozdrowienia BraZby www.faq.accdb.pl www.accdb.pl
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Thu, 01 Dec 2016 19:28
Date: Thu, 01 Dec 2016 19:28
143 lines
7353 bytes
7353 bytes
Nie wiem czy to będzie ciekawostka ale zapraszam Pana Bratko oraz towarzyszącego mi w zmaganiach Pana MaciejaF do próby znalezienia (pewnie mojego) błędu
Poniżej jest kod tworzący niezbędną tabelę i wpisujący jakieś tam dane.
Proszę po uruchomieniu z przycisku dodać specyfikację exportu do dowolnego z nazwy pliku csv, z zastrzeżeniem, że separatorami ma być średnik i należy transportować nagłówki kolumn. Po dokonaniu exportu proszę wejdźcie na stronę
https://www.sendit.pl/logowanie
utworzyłem tam konto
login:janmroz@onet.eu
hasło"123456
zalogujcie się, a potem :
-NADAJ PACZKĘ
-IMPORTUJ DANE Z CSV
-WYBIERZ
tu wybieramy nasz utworzony plik CSV
-WYŚLIJ
Jeśli plik i dane są poprawne to otrzymujemy skrótową informację o adresie odbiorcy
w przeciwnym razie na czerwono wyświetla się komunikat o błędach.
Jeśli nie macie błędów to ja coś mieszam, bo ja tu mam błąd.
Bez zamykania aplikacji SENDIT otwórzcie Wasz plik csv i zróbcie to o czym pisałem : "zapisz jako ... csv" . Po zamknięciu powróćcie do aplikacji i jeszcze raz wybierzcie teraz już zmieniony plik csv, a potem WYŚLIJ.
Jeśli uzyskacie poprawny wynik to należałoby na tym zakończyć i nie robić następnych kroków, aby w firmie SENDIT nie zrobić zbędnych bałaganów, gdyż konto jet fikcyjne.
I o to chodzi.
Jan
----------------------
'
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fldAddr1 As DAO.Field, fldAddr2 As DAO.Field, fldAddr3 As DAO.Field
Dim fldAddr4 As DAO.Field, fldAddr5 As DAO.Field, fldAddr6 As DAO.Field
Dim fldAddr7 As DAO.Field, fldAddr8 As DAO.Field, fldAddr9 As DAO.Field
Dim fldAddr10 As DAO.Field, fldAddr11 As DAO.Field, fldAddr12 As DAO.Field
Dim fldAddr13 As DAO.Field, fldAddr14 As DAO.Field, fldAddr15 As DAO.Field
Dim fldAddr16 As DAO.Field, fldAddr17 As DAO.Field, fldAddr18 As DAO.Field
Dim fldAddr19 As DAO.Field, fldAddr20 As DAO.Field, fldAddr21 As DAO.Field
Dim fldAddr22 As DAO.Field, fldAddr23 As DAO.Field, fldAddr24 As DAO.Field
Dim fldAddr25 As DAO.Field, fldAddr26 As DAO.Field
Set db = CurrentDb
On Error Resume Next
Set tdf = db.CreateTableDef("Export_DPD")
Set fldAddr1 = tdf.CreateField("S_Name", dbText)
Set fldAddr2 = tdf.CreateField("S_Address", dbText)
Set fldAddr3 = tdf.CreateField("S_Zip", dbText)
Set fldAddr4 = tdf.CreateField("S_City", dbText)
Set fldAddr5 = tdf.CreateField("S_Phone", dbText)
Set fldAddr6 = tdf.CreateField("S_Email", dbText)
Set fldAddr7 = tdf.CreateField("S_Contact_Person", dbText)
Set fldAddr8 = tdf.CreateField("P_Cat_KP", dbLong)
Set fldAddr9 = tdf.CreateField("P_Cat_5", dbLong)
Set fldAddr10 = tdf.CreateField("P_Cat_10", dbLong)
Set fldAddr11 = tdf.CreateField("P_Cat_20", dbLong)
Set fldAddr12 = tdf.CreateField("P_Cat_30", dbLong)
Set fldAddr13 = tdf.CreateField("P_Cat_50", dbLong)
Set fldAddr14 = tdf.CreateField("R_Name", dbText)
Set fldAddr15 = tdf.CreateField("R_Address", dbText)
Set fldAddr16 = tdf.CreateField("R_Zip", dbText)
Set fldAddr17 = tdf.CreateField("R_City", dbText)
Set fldAddr18 = tdf.CreateField("R_Phone", dbText)
Set fldAddr19 = tdf.CreateField("R_Email", dbText)
Set fldAddr20 = tdf.CreateField("R_Contact_Person", dbText)
Set fldAddr21 = tdf.CreateField("P_Courier_Name", dbText)
Set fldAddr22 = tdf.CreateField("P_Comment", dbText)
Set fldAddr23 = tdf.CreateField("P_Content", dbText)
Set fldAddr24 = tdf.CreateField("A_Terminal", dbText)
Set fldAddr25 = tdf.CreateField("P_Cod", dbLong)
Set fldAddr26 = tdf.CreateField("Time", dbText)
tdf.Fields.Append fldAddr1
tdf.Fields.Append fldAddr2
tdf.Fields.Append fldAddr3
tdf.Fields.Append fldAddr4
tdf.Fields.Append fldAddr5
tdf.Fields.Append fldAddr6
tdf.Fields.Append fldAddr7
tdf.Fields.Append fldAddr8
tdf.Fields.Append fldAddr9
tdf.Fields.Append fldAddr10
tdf.Fields.Append fldAddr11
tdf.Fields.Append fldAddr12
tdf.Fields.Append fldAddr13
tdf.Fields.Append fldAddr14
tdf.Fields.Append fldAddr15
tdf.Fields.Append fldAddr16
tdf.Fields.Append fldAddr17
tdf.Fields.Append fldAddr18
tdf.Fields.Append fldAddr19
tdf.Fields.Append fldAddr20
tdf.Fields.Append fldAddr21
tdf.Fields.Append fldAddr22
tdf.Fields.Append fldAddr23
tdf.Fields.Append fldAddr24
tdf.Fields.Append fldAddr25
tdf.Fields.Append fldAddr26
db.TableDefs.Append tdf
db.TableDefs.Refresh
Application.RefreshDatabaseWindow
Set fldAddr1 = Nothing
Set fldAddr2 = Nothing
Set fldAddr3 = Nothing
Set fldAddr4 = Nothing
Set fldAddr5 = Nothing
Set fldAddr6 = Nothing
Set fldAddr7 = Nothing
Set fldAddr8 = Nothing
Set fldAddr9 = Nothing
Set fldAddr10 = Nothing
Set fldAddr11 = Nothing
Set fldAddr12 = Nothing
Set fldAddr13 = Nothing
Set fldAddr14 = Nothing
Set fldAddr15 = Nothing
Set fldAddr16 = Nothing
Set fldAddr17 = Nothing
Set fldAddr18 = Nothing
Set fldAddr19 = Nothing
Set fldAddr20 = Nothing
Set fldAddr21 = Nothing
Set fldAddr22 = Nothing
Set fldAddr23 = Nothing
Set fldAddr24 = Nothing
Set fldAddr25 = Nothing
Set fldAddr26 = Nothing
Set tdf = Nothing
Set db = Nothing
'wpis danych
Dim strSQL As String
strSQL = "INSERT INTO Export_DPD ( R_Name, R_Address, S_Email, R_Zip, R_City, R_Phone, R_Email, R_Contact_Person, P_Cat_KP, P_Courier_Name, S_Name, S_Address, S_Zip, S_City, S_Phone, S_Contact_Person, [Time] ) SELECT 'Jan Mróz' AS Wyr1, 'Sztokcholmska' AS Wyr2, 'aaa@wp.pl' AS Wyr17, '71-234' AS Wyr3, 'Kasina Wielko' AS Wyr4, '123456789' AS Wyr5, 'Costam@wp.pl' AS Wyr6, 'Jan Mróz' AS Wyr7, 1 AS Wyr8, 'DPD' AS Wyr9, 'Jakaś firma' AS Wyr15, 'Okrągła' AS Wyr14, '02-223' AS Wyr13, 'Warsaawa' AS Wyr12, '123456789' AS Wyr11, 'AAA' AS Wyr10, 'normal' AS Wyr16;"
DoCmd.RunSQL strSQL
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Thu, 01 Dec 2016 20:04
Date: Thu, 01 Dec 2016 20:04
50 lines
3244 bytes
3244 bytes
W dniu 2016-12-01 o 20:28, Jan Koc pisze: > Nie wiem czy to będzie ciekawostka ale zapraszam Pana Bratko oraz towarzyszącego mi w zmaganiach Pana MaciejaF do próby znalezienia (pewnie mojego) błędu > Poniżej jest kod tworzący niezbędną tabelę i wpisujący jakieś tam dane. > Proszę po uruchomieniu z przycisku dodać specyfikację exportu do dowolnego z nazwy pliku csv, z zastrzeżeniem, że separatorami ma być średnik i należy transportować nagłówki kolumn. Po dokonaniu exportu proszę wejdźcie na stronę Z poziomu Access Wyeksportowałem dane do pliku *.csv. > https://www.sendit.pl/logowanie [...] > Jeśli plik i dane są poprawne to otrzymujemy skrótową informację o adresie odbiorcy > w przeciwnym razie na czerwono wyświetla się komunikat o błędach. > Jeśli nie macie błędów to ja coś mieszam, bo ja tu mam błąd. Za pierwszym razem miałem błąd, ponieważ separatorem tekstu w Accessie był domyślnie "" (cudzysłów) i aplikacja zgłosiła błąd o polu "S_Name". Ponownie wyeksportowałem, ale bez separatorów tekstu i wszystko poszło OK. > > Bez zamykania aplikacji SENDIT otwórzcie Wasz plik csv i zróbcie to o czym pisałem : "zapisz jako ... csv" . Po zamknięciu powróćcie do aplikacji i jeszcze raz wybierzcie teraz już zmieniony plik csv, a potem WYŚLIJ. Otworzyłem Excelem zapisany plik *.csv i zapisałem go jako inny plik *.csv. Żadnych komunikatów o błędach. Anulowałem poprzedni wpis w SENDIT, zaimportowałem nowy plik po konwersji przez Excela i też jest OK. Odczytane przez SENDIT dane poniżej: Nr Odbiorca Adres Pobranie Dodatkowe ubezpieczenie Nr dok. sprzedaży Cena Nr 1 Jan Mróz Sztokcholmska, 71-234 Kasina Wielko - - - 14.49 zł > > Jeśli uzyskacie poprawny wynik to należałoby na tym zakończyć i nie robić następnych kroków, aby w firmie SENDIT nie zrobić zbędnych bałaganów, gdyż konto jet fikcyjne. [...] Windows 7 64bit, Excel 2016 64 bit, Access 2007 32-bit -- Pozdrowienia BraZby www.faq.accdb.pl www.accdb.pl
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Thu, 01 Dec 2016 21:06
Date: Thu, 01 Dec 2016 21:06
26 lines
3198 bytes
3198 bytes
W dniu czwartek, 1 grudnia 2016 21:04:47 UTC+1 użytkownik Zbigniew Bratko napisał: > W dniu 2016-12-01 o 20:28, Jan Koc pisze: > Z poziomu Access Wyeksportowałem dane do pliku *.csv. > > > Za pierwszym razem miałem błąd, ponieważ separatorem tekstu w Accessie > był domyślnie "" (cudzysłów) i aplikacja zgłosiła błąd o polu "S_Name". błąd "S_Name" (nazwa pierwszej kolumny) pojawia się gdy plik nie jest czytany przez aplikację (moje doświadczenia) > > Ponownie wyeksportowałem, ale bez separatorów tekstu i wszystko poszło OK. > > Otworzyłem Excelem zapisany plik *.csv i zapisałem go jako inny plik > *.csv. Żadnych komunikatów o błędach. a nie miał Pan tu komunikatu o utracie formuł ? i sedno sprwy Zrobił Pan to z czym walczę od więcej niż trzech tygodni. Zapisany przez Accesa plik csv ponownie w Excela zapisał Pan jako csv. Po łacinie takie tłumaczenie tego samego przez to samo nazywano IDEM PER IDEM. Jak już mam plik csv to po co ta operacja. Bo jeśli Pan tego nie zrobi to Excel dołącza "coś" do tgo pliku i aplikacja pocztowa źle, niepoprawnie to odczytuje. Ja oczekiwałem, że jak już Acces dał mi plik csv to mogę go przetwarzać dalej bez tej zbędnej kołomyji. Więc ponieważ przez trzy tygodnie nie udało się w żaden sposób "prawdziwego" pliku csv z Accesa otrzymać, to proponowałem czy nie można by w tle po utworzeniu przez Accesa pliku cvs otworzyć go Excelam i w tle zapisać jako csv. Czyli to co Pan zrobił ręcznie i co ja też ręcznie robię codziennie. Serdecznie pozdrawiam i miło wspominam Pana pomoc kilka lat temu w pracy nad programem dla stolarni w której pracowałem. Jan Kociumbas
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Thu, 01 Dec 2016 21:25
Date: Thu, 01 Dec 2016 21:25
9 lines
2018 bytes
2018 bytes
I może jeszcze tak pracyzyjniej Czy podpisałby się Pan pod następującym kodem: DoCmd.TransferText acExportDelim, "nowyexport", "Export_DPD", "X:\Export_dpd.csv", True Msgbox "A teraz drogi użytkowniku, aby wysłać zlecenie do firmy kurierskiej, musisz samodzielnie utworzony u Ciebie plik X:\Export_dpd.csv otworzyć Excelem i zapisać jako (nomen omen) csv. Bo mi to nie wychodzi." Przepraszam za trochę sarkazmu, ale o to mi chodzi. Jan
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Thu, 01 Dec 2016 21:42
Date: Thu, 01 Dec 2016 21:42
74 lines
4463 bytes
4463 bytes
W dniu 2016-12-01 o 22:06, Jan Koc pisze:
> W dniu czwartek, 1 grudnia 2016 21:04:47 UTC+1 użytkownik Zbigniew Bratko napisał:
>> W dniu 2016-12-01 o 20:28, Jan Koc pisze:
>
>> Z poziomu Access Wyeksportowałem dane do pliku *.csv.
>>
>>
>> Za pierwszym razem miałem błąd, ponieważ separatorem tekstu w Accessie
>> był domyślnie "" (cudzysłów) i aplikacja zgłosiła błąd o polu "S_Name".
>
> błąd "S_Name" (nazwa pierwszej kolumny) pojawia się gdy plik nie jest czytany przez aplikację (moje doświadczenia)
I tak jest. Nie jest czytany ponieważ domyślnie (jeżeli nie usuniemy w
specyfikacji ""- cudzysłowiu jako znacznika tekstu, to otrzymamy ten
błąd. Więc ponownie z poziomu Accessa wyeksportowałem tabelę, ale w
specyfikacji eksportu wybrałem jako kwalifikator tekstu {brak} ew. można
usunąć średnik z tego pola.
I utworzony z poziomu Accessa plik *.csv był czytany przez SENDIT
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>
>> Ponownie wyeksportowałem, ale bez separatorów tekstu i wszystko poszło OK.
>>
>
>> Otworzyłem Excelem zapisany plik *.csv i zapisałem go jako inny plik
>> *.csv. Żadnych komunikatów o błędach.
> a nie miał Pan tu komunikatu o utracie formuł ?
Żadnych komunikatów.
> i sedno sprwy
> Zrobił Pan to z czym walczę od więcej niż trzech tygodni. Zapisany przez Accesa plik csv ponownie w Excela zapisał Pan jako csv.
Ale na wyraźne żądanie, by przeprowadzić test. W/g mnie pliki *.csv
Accessowy (bez kwalifikatora tekstu) i Excelowy są takie same.
Po łacinie takie tłumaczenie tego samego przez to samo nazywano IDEM PER
IDEM. Jak już mam plik csv to po co ta operacja.
Bo jeśli Pan tego nie zrobi to Excel dołącza "coś" do tgo pliku i
aplikacja pocztowa źle, niepoprawnie to odczytuje. Ja oczekiwałem, że
jak już Acces dał mi plik csv to mogę go przetwarzać dalej bez tej
zbędnej kołomyji.
Ale oba pliki były poprawnie czytane przez SENDIT. Plik *.csv Accessowy
bez kwalifikatora tekstu był czytany poprawnie, i tenże plik otwarty
przez Excela i ponownie zapisany pod inną nazwą.
> Więc ponieważ przez trzy tygodnie nie udało się w żaden sposób "prawdziwego" pliku csv z Accesa otrzymać, to proponowałem czy nie można by w tle po utworzeniu przez Accesa pliku cvs otworzyć go Excelam i w tle zapisać jako csv. Czyli to co Pan zrobił ręcznie i co ja też ręcznie robię codziennie.
Jeszcze raz powtórzę:
Plik *.csv utworzony przez MS Access, gdzie w specyfikacji został
usunięty Kwalifikator tekstu, był czytany poprawnie.
W pliku *.csv pierwsze pole zostało zapisane jako S_Name, a nie jako
"S_Name" (w cudzysłowiu) z którym to zapisem SENDIT nie dawał rady.
Po prostu Excel zapisuje plik *.csv nie stosując kwalifikatora tekstu. W
Accessie domyślnie używany jest "" cudzysłów i to właśnie musimy zmienić
(usunąć go)!
>
> Serdecznie pozdrawiam i miło wspominam Pana pomoc kilka lat temu w pracy nad programem dla stolarni w której pracowałem.
Miło mi.
--
Pozdrowienia
BraZby
www.faq.accdb.pl
www.accdb.pl
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Thu, 01 Dec 2016 21:50
Date: Thu, 01 Dec 2016 21:50
30 lines
2444 bytes
2444 bytes
W dniu 2016-12-01 o 22:25, Jan Koc pisze: > I może jeszcze tak pracyzyjniej > Czy podpisałby się Pan pod następującym kodem: > > DoCmd.TransferText acExportDelim, "nowyexport", "Export_DPD", "X:\Export_dpd.csv", True > > Msgbox "A teraz drogi użytkowniku, aby wysłać zlecenie do firmy kurierskiej, musisz samodzielnie utworzony u Ciebie plik X:\Export_dpd.csv otworzyć Excelem i zapisać jako (nomen omen) csv. Bo mi to nie wychodzi." > > Przepraszam za trochę sarkazmu, ale o to mi chodzi. Absolutnie NIE. Pisałem o tym w poprzednim poście. Tytułem testu proszę w bazie ustawić w opcjach by Access pokazał wszystkie obiekty systemowe. Otworzyć tabelę MSysIMEXSpecs, znaleźć tam zapisaną specyfikację "nowyexport" i w polu TextDelim usunąć pojedynczy znak cudzysłowiu i wyeksportować tabelę. DoCmd.TransferText acExportDelim, "nowyexport", "Export_DPD", "X:\Export_dpd.csv", True Msgbox "A teraz drogi użytkowniku,możesz wysłać zlecenie do firmy kurierskiej. Wszystko jest OK" -- Pozdrowienia BraZby www.faq.accdb.pl www.accdb.pl
Re: export kwerendy do pliku csv
Author: Zbigniew Bratko
Date: Thu, 01 Dec 2016 21:52
Date: Thu, 01 Dec 2016 21:52
28 lines
2377 bytes
2377 bytes
W dniu 2016-12-01 o 22:42, Zbigniew Bratko pisze:
> W dniu 2016-12-01 o 22:06, Jan Koc pisze:
>> W dniu czwartek, 1 grudnia 2016 21:04:47 UTC+1 użytkownik Zbigniew
>> Bratko napisał:
>>> W dniu 2016-12-01 o 20:28, Jan Koc pisze:
>>
>>> Z poziomu Access Wyeksportowałem dane do pliku *.csv.
>>>
>>>
>>> Za pierwszym razem miałem błąd, ponieważ separatorem tekstu w Accessie
>>> był domyślnie "" (cudzysłów) i aplikacja zgłosiła błąd o polu "S_Name".
>>
>> błąd "S_Name" (nazwa pierwszej kolumny) pojawia się gdy plik nie jest
>> czytany przez aplikację (moje doświadczenia)
>
> I tak jest. Nie jest czytany ponieważ domyślnie (jeżeli nie usuniemy w
> specyfikacji ""- cudzysłowiu jako znacznika tekstu, to otrzymamy ten
> błąd. Więc ponownie z poziomu Accessa wyeksportowałem tabelę, ale w
> specyfikacji eksportu wybrałem jako kwalifikator tekstu {brak} ew. można
> usunąć średnik z tego pola.
Oczywiście że znak " (cudzysłów), a nie średnik ;
--
Pozdrowienia
BraZby
www.faq.accdb.pl
www.accdb.pl
Re: export kwerendy do pliku csv
Author: Jan Koc
Date: Thu, 01 Dec 2016 22:13
Date: Thu, 01 Dec 2016 22:13
10 lines
2329 bytes
2329 bytes
Panie Zbigniewie !!! Działa. Ponad trzy tygodnie boksowania się. Ale albo źle to tłumaczyłem, albo należało już na początku udostępnić całość tego problemu w postaci tabeli i dostępu do SENDIT-a. Kombinowałem z kwantyfikatorem teksty, ale separatora nie tknąłem. Pięknie, że mam to za sobą. Dziękuje Panu, a także Panu MaciejowiF za poświęcony czas. Dużo mi dał kontakt z jego postami. Msgbox "Drogi użytkowniku. Świat nie jest taki zły. Jest pełno przyjaznych, chętnych do pomocy ludzi. Avanti" Dziękuję GURU
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