[ Car78 @ 06.06.2005. 08:16 ] @
Treba mi jedan primjer procedure za exportovanje podataka u Excel, ako ko ima - najednostavniji select ciji rezultat treba proslijediti u Excel fajl ??
[ franjo_tahi @ 06.06.2005. 10:42 ] @
Evo ti primjera, nije dorađen, ali radi. EXCEL_TLB možeš nači na netu, a ako ne uspiješ javi pa ću ti poslati.
[ Car78 @ 06.06.2005. 13:24 ] @
Pogledao sam ovaj fajl, malo mi je nejasan (dobro mi je nejasan) o cemu se ovdje radi ??? Koliko vidim ovdje se radi o nekim paketu, interfejsima, itd. o necemu sto nisam bas do sada nikada gledao, najblize mi je nekoj JAVA strukturi koda . Meni " jednostavno" treba Uskladistena procedura tj. upit koji se cuva na SQL Serverovoj bazi podataka a omogucuje export podataka iz neke tabele u Excel fajl jednostavnim pokretanjem procedure u Query Anayzer.
[ ivan jeremic @ 06.06.2005. 14:13 ] @
Nemozes da radis to iz stored procedure. Za to se koristi DTS.
E sad .. posto me jako mrzi da ti opisujem ceo proces evo jako nezgrapnog objasnjenja:
IZ DTS alata (pokreni ga iz program grupe Microsoft SQL server) izaberi za source tvoj SQL server, za destination tvoj excel fajl. U sledecom koraku izaberi opciju use query to transfer data i tamo ukucaj npr exec spMojaProcedura. Ako zelis da ovo ponavljas vise puta ili eventualno postavis kao job stikliraj opciju Save as DTS package i okini. On ce prebaciti podatke iz sp u excel. Ako si stiklirao onu opciju za package onda u local packages imas taj tvoj paket po imenu koje si mu dao pa mozes da mu odradis desni mis > schedule as job i kazes mu kada da se okida i onda on to radi automatski u zadato vreme i uffff ... to je to.
[ Car78 @ 06.06.2005. 14:33 ] @

"Nemozes da radis to iz stored procedure. Za to se koristi DTS. " Dali si siguran za to posto sam nasao na web-u ovu proceduru ali nemogu da je pokrenem, dali je problem do parametara koje joj prosledujem (sto cisti sumnjam) ili nesto drugo ali zapinje negdje ovdje

EXEC @hr = sp_OACreate 'SQLOLE.SQLServer', @SQLServer OUT
IF @hr <> 0
BEGIN
PRINT 'error create SQLOLE.SQLServer'
RETURN

Pa oko neko uspije da pokrene da mi kaze sto da cinim !!


/*
Version: SQL Server 6.5
Created by: Alexander Chigrik
http://www.MSSQLCity.com/ - all about MS SQL
(SQL Server Articles, FAQ, Scripts, Tips and Test Exams).

This stored procedure can be used to insert the result set of the
particular select statement into Excel file (c:\ImportToExcel.xls,
by default).
You can pass the server name, user name, user password, the select
statement to execute, and the file name to store the results set,
as in the example below:

EXEC ExportToExcel @server = '.',
@uname = 'sa',
@QueryText = 'SELECT au_fname FROM pubs..authors',
@filename = 'c:\ImportToExcel.xls'
*/

IF OBJECT_ID('ExportToExcel') IS NOT NULL DROP PROC ExportToExcel
GO

CREATE PROCEDURE ExportToExcel (
@server varchar(30) = null,
@uname varchar(30) = null,
@pwd varchar(30) = null,
@QueryText varchar(200) = null,
@filename varchar(100) = 'c:\ImportToExcel.xls'
)
AS
DECLARE @SQLServer int,
@QueryResults int,
@CurrentResultSet int,
@object int,
@WorkBooks int,
@WorkBook int,
@Range int,
@hr int,
@Columns int,
@Rows int,
@indColumn int,
@indRow int,
@off_Column int,
@off_Row int,
@code_str varchar(100),
@result_str varchar(255)

IF @QueryText IS NULL
BEGIN
PRINT 'Set the query string'
RETURN
END

-- Sets the server to the local server
IF @server IS NULL SELECT @server = @@servername

-- Sets the username to the current user name
IF @uname IS NULL SELECT @uname = SYSTEM_USER

SET NOCOUNT ON

EXEC @hr = sp_OACreate 'SQLOLE.SQLServer', @SQLServer OUT
IF @hr <> 0
BEGIN
PRINT 'error create SQLOLE.SQLServer'
RETURN
END

-- Connect to the SQL Server
IF @pwd IS NULL
BEGIN
EXEC @hr = sp_OAMethod @SQLServer, 'Connect', null, @server, @uname
IF @hr <> 0
BEGIN
PRINT 'error CONNECT'
RETURN
END
END
ELSE
BEGIN
EXEC @hr = sp_OAMethod @object, 'Connect', null, @server, @uname, @pwd
IF @hr <> 0
BEGIN
PRINT "error Connect"
RETURN
END
END

SELECT @result_str = 'ExecuteWithResults("' + @QueryText + '")'
EXEC @hr = sp_OAMethod @SQLServer, @result_str, @QueryResults OUT
IF @hr <> 0
BEGIN
PRINT 'error with method ExecuteWithResults'
RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'CurrentResultSet', @CurrentResultSet OUT
IF @hr <> 0
BEGIN
PRINT 'error get CurrentResultSet'
RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'Columns', @Columns OUT
IF @hr <> 0
BEGIN
PRINT 'error get Columns'
RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'Rows', @Rows OUT
IF @hr <> 0
BEGIN
PRINT 'error get Rows'
RETURN
END

EXEC @hr = sp_OACreate 'Excel.Application', @object OUT
IF @hr <> 0
BEGIN
PRINT 'error create Excel.Application'
RETURN
END

EXEC @hr = sp_OAGetProperty @object, 'WorkBooks', @WorkBooks OUT
IF @hr <> 0
BEGIN
PRINT 'error create WorkBooks'
RETURN
END

EXEC @hr = sp_OAGetProperty @WorkBooks, 'Add', @WorkBook OUT
IF @hr <> 0
BEGIN
PRINT 'error with method Add'
RETURN
END

EXEC @hr = sp_OAGetProperty @object, 'Range("A1")', @Range OUT
IF @hr <> 0
BEGIN
PRINT 'error create Range'
RETURN
END

SELECT @indRow = 1
SELECT @off_Row = 0
SELECT @off_Column = 1

WHILE (@indRow <= @Rows)
BEGIN
SELECT @indColumn = 1

WHILE (@indColumn <= @Columns)
BEGIN

EXEC @hr = sp_OAMethod @QueryResults, 'GetColumnString', @result_str OUT, @indRow, @indColumn
IF @hr <> 0
BEGIN
PRINT 'error get GetColumnString'
RETURN
END

EXEC @hr = sp_OASetProperty @Range, 'Value', @result_str
IF @hr <> 0
BEGIN
PRINT 'error set Value'
RETURN
END

EXEC @hr = sp_OAGetProperty @Range, 'Offset', @Range OUT, @off_Row, @off_Column
IF @hr <> 0
BEGIN
PRINT 'error get Offset'
RETURN
END

SELECT @indColumn = @indColumn + 1

END

SELECT @indRow = @indRow + 1
SELECT @code_str = 'Range("A' + LTRIM(str(@indRow)) + '")'
EXEC @hr = sp_OAGetProperty @object, @code_str, @Range OUT
IF @hr <> 0
BEGIN
PRINT 'error create Range'
RETURN
END

END

SELECT @result_str = "exec master..xp_cmdshell 'del " + @filename + "', no_output"
EXEC(@result_str)
SELECT @result_str = 'SaveAs("' + @filename + '")'
EXEC @hr = sp_OAMethod @WorkBook, @result_str
IF @hr <> 0
BEGIN
PRINT 'error with method SaveAs'
RETURN
END

EXEC @hr = sp_OAMethod @WorkBook, 'Close'
IF @hr <> 0
BEGIN
PRINT 'error with method Close'
RETURN
END

EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
PRINT 'error destroy Excel.Application'
RETURN
END

EXEC @hr = sp_OADestroy @SQLServer
IF @hr <> 0
BEGIN
PRINT 'error destroy SQLOLE.SQLServer'
RETURN
END
GO