Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL & EXCEL / 19 сообщений из 19, страница 1 из 1
17.06.2002, 10:46:01
    #32032898
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Privetstvuu.U menia problema s DTS packagem iz kotorogo ia sohraniau datu v EXCEL.
Rabotaet normalno, no kazdii raz dobavliaet datu v EXCEL, a mne nado chtobi perepisivala (overwrite).
Podskazite pozaluista, kak otchistit EXCEL pered dobavleniem novih dannih?

Spasibo
...
Рейтинг: 0 / 0
17.06.2002, 11:27:28
    #32032904
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
>Podskazite pozaluista, kak otchistit EXCEL pered dobavleniem novih dannih?

Удалить файл/workbook/sheet и создать заново
...
Рейтинг: 0 / 0
17.06.2002, 11:30:03
    #32032906
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Spasibo,
tolko ia ne znau a kak sdelat eto v ramkah DTS Packaga?
...
Рейтинг: 0 / 0
17.06.2002, 11:45:00
    #32032907
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Вообще-то т.к. работа с Excel файлом идет через Jet, то для создания/удаления sheet-ов можно использовать Execute SQL Task и "нормальный" SQL CREATE TABLE/DROP TABLE (правда это не T-SQL, поэтому есть некоторые различия в формате запросов)

Либо через ActiveX Scipt

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Function Main()

	Dim FileName
	FileName = DTSGlobalVariables( "OutputFileFullName" ).Value

	Dim fso
	Set fso = CreateObject( "Scripting.FileSystemObject" )
	If (fso.FileExists(FileName)) Then
		fso.DeleteFile FileName, TRUE
	End If

	If (fso.FileExists(FileName)) Then
		Main = DTSTaskExecResult_Failure
	Else
		Dim objXL
		Set objXL = CreateObject( "Excel.Application" )

		objXL.Visible = FALSE
		objXL.WorkBooks.Add

		Dim SheetsCnt
		Set SheetsCnt = objXL.WorkBooks( 1 ).Sheets
		While SheetsCnt.Count >  1 
			objXL.WorkBooks( 1 ).Sheets(SheetsCnt.Count).Delete
		Wend

		objXL.WorkBooks( 1 ).Sheets( 1 ).Activate()
		objXL.WorkBooks( 1 ).SaveAs(FileName)
		objXL.Quit
		Set objXL = Nothing

		If (fso.FileExists(FileName)) Then
			Main = DTSTaskExecResult_Success
		Else
			Main = DTSTaskExecResult_Failure
		End If
	End If
End Function

...
Рейтинг: 0 / 0
18.06.2002, 04:20:49
    #32032993
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Glory, chto-to ono u menia ne rabotaet.
Posle zapuska ActiveX scripta pokazivaet sleduushee soobshenie:

"! The selected sheet(s) will be permanemtly deleted.
|To delete the selected sheets press OK
| To cancel press Cancel"

A posle etogo zavisaet.
V chem delo?
...
Рейтинг: 0 / 0
18.06.2002, 09:01:09
    #32033009
MIKLUHA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Здравствуйте.

Может быть установка objXL.DisplayAlerts = FALSE до удаления листов Вам поможет?

Желаю успехов!
...
Рейтинг: 0 / 0
19.06.2002, 03:21:59
    #32033133
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
MIKLUHA, zdravstvuite, a gde etu funkciuu na primere kodaprislannogo Glory nuzno postavit?
...
Рейтинг: 0 / 0
19.06.2002, 05:13:25
    #32033136
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Sechas poproboval udalit dannie cheres "Execute SQL Task'" v DTS package (proboval postavit drop and recreate i delete) vidaet sleduushuu oshibku:
"deliting data is not supported by this ISAM".

Kto_nibud znaet chto eto znachit?
...
Рейтинг: 0 / 0
19.06.2002, 08:51:17
    #32033143
MIKLUHA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Здравствуйте!

Строчка добавляется перед удалением лишних листов (Sheets). Например, так:

...
objXL.Visible = FALSE
objXL.WorkBooks.Add
objXL.DisplayAlerts = FALSE

Dim SheetsCnt
...

Желаю успехов.
...
Рейтинг: 0 / 0
19.06.2002, 09:03:58
    #32033145
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Ogromnoe spasibo vsem.
Poslednee predlozenie eshe ne testiroval, poluchilos po drugomu. No kak-to stranno, rasskazu, mozet komu prigoditsia.
Kogda delal cheres "Execute SQL Task'" v DTS package (proboval postavit drop and recreate i delete) vidavala sleduushuu oshibku:
"deliting data is not supported by this ISAM".

No kogda delaesh tot_ze samii peregon, no ispolzuia "DTS Wizard" i zatem sohraniaesh kak package, to rabotaet.
Samoe smeshnoe, chto cod bil tot-ze samim (drop/create table) no pochemuto ne rabotalo.

Vsem uspehov
...
Рейтинг: 0 / 0
19.06.2002, 19:12:37
    #32033216
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Привет
Я делал так: открывается файл, выбирается нужный лист, диапазон и очищается

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function Main()
	Set xls = CreateObject( "Excel.Application" )
	xls.visible = false
	xls.Workbooks.Open  "c:\work\scripts\xls\Other\Currencies & Countries.XLS" 
	Set book = xls.Workbooks( 1 )

	For each foo in book.Worksheets
		foo.activate
		foo.range( "A2:F500" ).delete
	next
	book.close true
	xls.quit

	Main = DTSTaskExecResult_Success
End Function


Таким образом можно избирательно очищать данные, сохраняя верстку, расцветку и т.п.
...
Рейтинг: 0 / 0
20.06.2002, 03:42:47
    #32033242
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
AAron, spasibo , rabotaet, kak chasi.
Prosto i to chto nado.
...
Рейтинг: 0 / 0
20.06.2002, 04:05:21
    #32033244
crot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
AAron, a etot script rabotaet tolko na MSSQL 2000.
U menia na 2000 rabotaet, a na MSSQL 7 net, na pervoi strochke vidaet oshibku "read Only".
Tak i dolzno bit ili ctoto ne pravilno?
...
Рейтинг: 0 / 0
21.06.2002, 09:47:56
    #32033428
denis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
А где взять описание Execute SQL Task.
А то есть проблема.
Нужно взять из Excel определенные значения из ячейки, обработать и запихнуть в таблицу SQL и в другой Excel.
Кто нить занимался этой задачкой?
Может Есть примерчики ссылки в Инете?
...
Рейтинг: 0 / 0
21.06.2002, 11:03:36
    #32033446
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Нужно взять из Excel определенные значения из ячейки, обработать и запихнуть в таблицу SQL и в другой Excel.
Кто нить занимался этой задачкой?


А причем здесь Execute SQL Task ? Для таких вещей есть Transformation Task

У вас должно получиться что-то такое

Excel Connection1 --Transformation Task1 --> SQL Conection --Transformation Task2 --> Excel Connection2

И в каждой Transformation Task совершаете нужные вам действия
...
Рейтинг: 0 / 0
24.06.2002, 12:28:09
    #32033602
denis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Transf task наверно не пойдет, т.к. это нужно делать с клиентского приложения, в котором есть возможность запускать хранимые процедуры на SQL сервере.
Т.е. интересует можно ли в хранимой процедуре открыть
файл Excel (чтобы появился диалог открытия нужногг файла) взять из опред.листа Excel данные из опред. ячеек и поместить в таблицу.
Выше написано что это делается через ActiveX и VB.
Только поподробней -куда этот код записывать (в SP)?
...
Рейтинг: 0 / 0
24.06.2002, 16:14:10
    #32033653
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Т.е. интересует можно ли в хранимой процедуре открыть файл Excel (чтобы появился диалог открытия нужнго файла)

Выдача всяческих интерактивных окон - это прерагатива клиентского приложения, но никак не хранимой процедуры. Поэтому в T-SQL подобных операторов нет.

Выше написано что это делается через ActiveX и VB.
Только поподробней -куда этот код записывать (в SP)?


Данные выше примеры выполняются в DTS Package в специальном ActiveX Scipt Task. А DTS Package не то же самое, что хранимая процедура

Для работы с COM объектами в самом T-SQL имеется набор процедур, имена которых начинаются с sp_OA.
Только IMHO это не лучший вариант, особенно для работы.
Лучше все-таки рассмотреть варианты
- linked server
- DTS Package
- клиентское приложение
...
Рейтинг: 0 / 0
24.06.2002, 16:20:59
    #32033657
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
Вот вам пример работы с простым текстовым файлом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
DECLARE @FileName varchar( 255 ), 
@Text1 varchar( 8000 ),
@FS int, 
@OLEResult int, 
@FileID int, 
@hr int,
@source varchar( 30 ), 
@desc varchar ( 200 )

EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUTPUT

IF @OLEResult <>  0  
BEGIN
PRINT 'Scripting.FileSystemObject'
GOTO Error_Handler
END

execute @OLEResult = sp_OAMethod @FS,'CreateTextFile',@FileID OUTPUT, 'c:\func.txt'
IF @OLEResult <>  0  
BEGIN
PRINT 'CreateTextFile'
GOTO Error_Handler
END

execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', NULL, 'dsfgsdfgsdf'
IF @OLEResult <>  0  
BEGIN
PRINT 'WriteLine'
GOTO Error_Handler
END

Print @Text1
goto Done

Error_Handler: 
PRINT '*** ERROR ***'
EXEC @hr = sp_OAGetErrorInfo null, @source OUT, @desc OUT
SELECT hr = CONVERT (binary( 4 ), @hr), source = @source, description = @desc

Done:
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS



PS
Думаю, что при работе с Excel у вас получится тот еще код. Так что подумайте еще раз
...
Рейтинг: 0 / 0
29.06.2002, 21:02:36
    #32034399
MarchCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL & EXCEL
to Glory

О а я и не предпологал что T-SQL может пользоваться
объектами WinScriptHost - вот это номер!!!

:))))))) В понедельник опробую. Спасибо за пример!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL & EXCEL / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]