Zapis faktury z DaneBinarne do PDF.
Moderator: mikey
Zapis faktury z DaneBinarne do PDF.
Cześć,
Potrzebuję szybkiej pomocy. Próbuję zapisać fakturę z tabeli cdn.DaneBinarne we wskazanym miejscu na dysku do pliku PDF.
Komenda:
EXEC xp_cmdshell 'bcp "SELECT DAB_DANE FROM ERPXL_PREZ14.cdn.danebinarne where DAB_ID=2520" queryout c:\faktura.pdf -T -c -C RAW -S WOJTEK-DATASOFT\SQL2008 -T -N'
Zapisuje plik lecz nie da się go potem otworzyć.
Bardzo zależy mi na takiej lub innej sql'owej formie ponieważ chciałbym użyć polecenia w triggerze lub w modelowaniu procesów.
Pozdrawiam
Wojtek
Potrzebuję szybkiej pomocy. Próbuję zapisać fakturę z tabeli cdn.DaneBinarne we wskazanym miejscu na dysku do pliku PDF.
Komenda:
EXEC xp_cmdshell 'bcp "SELECT DAB_DANE FROM ERPXL_PREZ14.cdn.danebinarne where DAB_ID=2520" queryout c:\faktura.pdf -T -c -C RAW -S WOJTEK-DATASOFT\SQL2008 -T -N'
Zapisuje plik lecz nie da się go potem otworzyć.
Bardzo zależy mi na takiej lub innej sql'owej formie ponieważ chciałbym użyć polecenia w triggerze lub w modelowaniu procesów.
Pozdrawiam
Wojtek
Re: Zapis faktury z DaneBinarne do PDF.
Stwórz sobie plik format.fmt o zawartości np. takiej:
a następnie wykonaj:
Oczywiście odpowiednio zmodyfikuj to co napisałem, ale ogólnie mówiąc plik się nie otwiera po eksporcie ze względu na ostanie X bitów zależnych od formatowania wykorzystanego przy eksporcie.
Pozdrawiam,
Mateusz
Kod: Zaznacz cały
10.0
1
1 SQLBINARY 0 2 "" 1 DepartmentID ""
Kod: Zaznacz cały
DECLARE @SQLcommand NVARCHAR(4000)
SET @SQLcommand = 'bcp "SELECT BIN FROM x.dbo.x where id=1" queryout "c:\2.jpg" -T -S NB41\SQL2008 -fc:\1\format.fmt'
EXEC xp_cmdshell @SQLcommand
Pozdrawiam,
Mateusz
Re: Zapis faktury z DaneBinarne do PDF.
Cześć,
Dzięki za zainteresowanie wątkiem.
Przetestowałem, niestety używając takiego formatu tworzony jest plik bez zawartości (0 bytes)
Pozdrawiam Wojtek
Dzięki za zainteresowanie wątkiem.
Przetestowałem, niestety używając takiego formatu tworzony jest plik bez zawartości (0 bytes)
Pozdrawiam Wojtek
Re: Zapis faktury z DaneBinarne do PDF.
To mój fmt:
A to zapytanie które każdy może sobie przetestować na bazie XL'a:
Niestety niedziałające.
Help
Pozdrawiam Wojtek
Kod: Zaznacz cały
10.0
1
1 SQLBINARY 0 2 "" 1 DAB_DANE ""
Kod: Zaznacz cały
DECLARE @SQLcommand NVARCHAR(4000)
SET @SQLcommand = 'bcp "SELECT max(DAB_DANE) FROM ERPXL_PREZ14.cdn.danebinarne where DAB_Rozszerzenie=''PDF'' and DAB_DANE is not null" queryout "D:\wydruk.pdf" -T -S serwer\SQL2008 -f D:\format.fmt'
EXEC xp_cmdshell @SQLcommand
Help
Pozdrawiam Wojtek
Re: Zapis faktury z DaneBinarne do PDF.
To czy podany plik "działa" po eksporcie, czy też nie, zależy również od wersji bcp i kilku innych kwestii. Przeczytaj proszę ten artykuł:
http://technet.microsoft.com/en-us/libr ... l.80).aspx
Pozdrawiam,
Mateusz
http://technet.microsoft.com/en-us/libr ... l.80).aspx
Pozdrawiam,
Mateusz
Re: Zapis faktury z DaneBinarne do PDF.
Może się przyda:
http://stackoverflow.com/questions/1220 ... -procedure
http://stackoverflow.com/questions/1220 ... -procedure
Pozdrawiam,
Robert
select convert(varchar(100),0x637a6173616d69207069737aea2074752067b375706f7479203a29)
Robert
select convert(varchar(100),0x637a6173616d69207069737aea2074752067b375706f7479203a29)
Re: Zapis faktury z DaneBinarne do PDF.
Cześć,
Dzięki za podpowiedzi. Niestety nawet import na podstawie stworzonego przez procedurę pliku formatu nie daje poprawnego rezultatu.
mój bcp jest w wersji 10.50.2500.0
plik formatu:
polecenia:
Jeśłi komuś to zadziałało to bardzo proszę o info co robię nie tak.
aha wyłączyłem także kompresję tych załączników robioną przez XL'a
Pozdrawiam Wojtek
Dzięki za podpowiedzi. Niestety nawet import na podstawie stworzonego przez procedurę pliku formatu nie daje poprawnego rezultatu.
mój bcp jest w wersji 10.50.2500.0
plik formatu:
Kod: Zaznacz cały
10.5
1
1 SQLBINARY 8 0 "" 35 DAB_DANE ""
Kod: Zaznacz cały
EXEC xp_cmdshell 'BCP "SELECT DAB_DANE FROM ERPXL_PREZ14.cdn.danebinarne where DAB_ID=2521" queryout "D:\weefwed.pdf" -f d:\format.fmt -S WOJTEK\DATASOFT\SQL2008 -T -N'
EXEC xp_cmdshell 'bcp "SELECT DAB_DANE FROM ERPXL_PREZ14.cdn.danebinarne where DAB_ID=2521" queryout D:\tmp\pdf\dobry.pdf -T -f d:\format.fmt -c -C RAW -S WOJTEK\SQL2008 -T -N'
aha wyłączyłem także kompresję tych załączników robioną przez XL'a
Kod: Zaznacz cały
select SLW_WartoscN1 /*to pole ma mieć wartosc 0 */,
* from CDN.Slowniki where SLW_WartoscS = 'Archiwum wydruków' or SLW_WartoscS = 'Plik PDF'
-
- Posty: 182
- Rejestracja: 20 mar 2012, 09:04
- Rola: Konsultant CDN XL
- Wersja: 2016
- Lokalizacja: Wrocław
Re: Zapis faktury z DaneBinarne do PDF.
Wyłączyłeś kompresję, ale czy plik który chcesz wyciągnąć z bazy nie jest już skompresowany przez XLa (wcześniejszy)?
Re: Zapis faktury z DaneBinarne do PDF.
Cześć,
Nie, po wyłączeniu kompresji utworzyłem nowy załącznik i nadal jest taka sama sytuacja.
Nawet plik tekstowy ma zakodowaną zawartość.
Nie, po wyłączeniu kompresji utworzyłem nowy załącznik i nadal jest taka sama sytuacja.
Nawet plik tekstowy ma zakodowaną zawartość.
- viesiek1
- Posty: 416
- Rejestracja: 03 maja 2011, 18:40
- Rola: Administrator CDN XL
- Wersja: 2023
- Lokalizacja: Bielsko-Biała
- Kontakt:
Re: Zapis faktury z DaneBinarne do PDF.
U mnie dane binarne nie są skompresowane więc działa taki kod w C#
Kod: Zaznacz cały
private void button1_Click(object sender, EventArgs e)
{
string lConnStr = "Data Source=server;Initial Catalog=CDNXL_DataBase;Persist Security Info=True;User ID=sa;Password=pass";
StringBuilder lSb = new StringBuilder();
try
{
using (SqlConnection lConnection = new SqlConnection(lConnStr))
{
using (SqlCommand lCommand = new SqlCommand())
{
lCommand.Connection = lConnection;
if (lCommand.Connection.State != ConnectionState.Open)
lConnection.Open();
lSb.AppendLine("SELECT DAB_Dane FROM CDN.DaneBinarne");
lSb.AppendLine("WHERE DAB_ID = 38");
lCommand.CommandText = lSb.ToString();
using(SqlDataReader lReader = lCommand.ExecuteReader())
{
if (lReader.HasRows)
{
while (lReader.Read())
{
byte[] lByte = new byte[0];
try
{
lByte = (Byte[])(lReader["DAB_Dane"]);
using (FileStream lFs = new FileStream("C:\\Temp\\file.pdf", FileMode.Create, FileAccess.ReadWrite))
{
using (System.IO.BinaryWriter lBw = new System.IO.BinaryWriter(lFs))
{
lBw.Write(lByte);
lBw.Close();
}
lFs.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("Wystąpił błąd: " + ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
if (!lReader.IsClosed)
lReader.Close();
}
if (lCommand.Connection.State != ConnectionState.Closed)
lConnection.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show("Wystąpił błąd: " + ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Wiesław Świergała
tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl
http://www.hydro.com.pl
tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl
http://www.hydro.com.pl