Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Delphi+DTS   Найти похожие ветки 

 
BJValentine ©   (2002-08-09 13:24) [0]

Ребята, помогите. Передо мной стоит серъёзная задача. Пол-предприятия работает с DBF, а половина - с MS Sql. Данные одни и те же. У меня работает прога, которая из DBF копирует нужную часть записей в MS SQL. Всё то оно хорошо, но прога эта глючная и медленная, т. к. я копирую след. образом:
SqlTable.FieldByName("FieldNameSql").asString:=DBFTable.FieldByName("FieldNameDbf).asString;

Помогите мне разобраться с DTS. Чтобы моя прога сама могла использовать функции DTS (ссылку какую-нибудь или экземпл). Заранее спасибо.


 
MOA   (2002-08-09 13:46) [1]

М.б. можно совсем просто - запуск по расписанию DTS пакета не разве не подходит?


 
sniknik ©   (2002-08-09 13:50) [2]

Не советую пользоватся DTS, в программе это както некстати. Лутше сделать линкед сервер для подсоедениеия dbf-а к mssql или проше запросами в MSSQL (см. BOL. на OPENROWSET). это позволит в MSSQL "напрямую" брать данные из dbf.

запрос SELECT INTO или INSERT INTO это похоже самый быстрый вариант.


 
BJValentine ©   (2002-08-09 15:15) [3]

А можно примерчик таких запросов? И что такое ЛИНКЕД СЕРВЕР?


 
Leran2002 ©   (2002-08-09 15:35) [4]

В Query1.SQL записываешь что-то типа этого:

INSERT INTO ":MSSQLAlias:Table_Name"
SELECT * FROM ":DBFAlias:Table_Name.dbf"

и в программе выполняешь запрос методом:

Query1.ExecSQL;


 
sniknik ©   (2002-08-09 15:39) [5]

Примерчик
IF EXISTS (SELECT * FROM sysobjects WHERE (name = N"CashSail"))
BEGIN
INSERT INTO CashSail
SELECT * FROM mydbfs...CashSail
END ELSE BEGIN
SELECT * INTO CashSail
FROM mydbfs...CashSail
CREATE INDEX CashIndex ON CashSail (CashNumber)
CREATE INDEX ZIndex ON CashSail (ZNumber)
END

это через линкед сервер (в принципе директория подключенная к MSSQL которую он видит как свою базу, обращения видно как ..)

mydbfs здесь он и есть можно руками сделать в Ентерпр.менеджере можно програмно
EXEC sp_addlinkedserver
@server = "MYDBFs",
@provider = "Microsoft.Jet.OLEDB.4.0",
@srvproduct = "OLE DB Provider for Jet",
@datasrc = "C:\",
@provstr = "dBASE IV"

(запрос выполнить в Query Analizere или через ADOCommand)

а без всей этой байды через OPENROWSET тоже самое
IF EXISTS (SELECT * FROM sysobjects WHERE (name = N"CashSail"))
BEGIN
INSERT INTO CashSail
SELECT * FROM OpenRowset("MSDASQL.1", "Driver={Microsoft dBase Driver (*.dbf)};DBQ=D:\Work\Zip;", "select * from CashSail")
END ELSE BEGIN
SELECT * INTO CashSail
FROM OpenRowset("MSDASQL.1", "Driver={Microsoft dBase Driver (*.dbf)};DBQ=D:\Work\Zip;", "select * from CashSail")
END

(здесь драйвер ODBC т.к. с OLEDB проблемы были)


 
BJValentine ©   (2002-08-09 17:01) [6]

Sniknik, где ты раньше был? Ты действительно мастер! Большое спасибо!



Страницы: 1 вся ветка

Текущий архив: 2002.08.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-95864
RazorbladE
2002-08-16 12:30
2002.08.29
Высота строки в DBGrid


3-95646
masanovetc
2002-08-06 11:40
2002.08.29
Как сделать запрос при помощи временных таблиц?


1-95824
GIL
2002-08-12 05:28
2002.08.29
Люди, поможите!! Как встроить в CheckListBox событие OnScroll,


14-95964
IronHawk
2002-07-31 02:08
2002.08.29
Приветствую Мастеров! И всех, всех, всех кто меня помнит !!!


1-95825
race1
2002-08-17 08:40
2002.08.29
мерцание :(