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

Вниз

Создание таблицы в формате dBase-IV   Найти похожие ветки 

 
Siv M ©   (2002-11-07 17:45) [0]

Доброго времени суток всем.
Есть БД под управлением MS SQL. Необходимо из таблиц сохранять некоторые записи в формате dBase-IV причем таблица dBase по полям не является идентичной ни одной из таблиц MS SQL.
Как можно все это пофиксить?


 
sniknik ©   (2002-11-07 18:17) [1]

Запросом (insert into) в линк сервер.


 
Siv M ©   (2002-11-08 13:25) [2]

Спасибо, что откликнулись, sniknik.
Но можно ли поподробнее? И как в файле сохранить таблицу?


 
Siv M ©   (2002-11-08 14:45) [3]

Народ помогите!!!


 
Siv M ©   (2002-11-08 17:21) [4]

Народ где Вы???


 
sniknik ©   (2002-11-08 17:48) [5]

делаеш линк (все командами SQL)

EXEC sp_addlinkedserver
@server = "MYDBFs",
@provider = "Microsoft.Jet.OLEDB.4.0",
@srvproduct = "OLE DB Provider for Jet",
@datasrc = "D:\",
@provstr = "dBASE IV"

обрашаешся к таблице в линке
INSERT INTO MYDBFs...MYTable (ПОЛЯ 1 2 3) SELECT ПОЛЯ 1 2 3 FROM набор откуда

должен проходить и SELECT INTO MYDBFs...MYTable .... если в новую таблицу


 
Siv M ©   (2002-11-08 19:26) [6]

Извините, за глупые вопросы:
1. При этом образуется новый файл dBase-IV содержащий данные согласно запроса?
2. Что такое @datasrc = "D:\" - каталог куда будет сохранена таблица?
3. Для того, чтобы использовать подобный запрос необходимо воспользоваться ADOCommand?
4. Почему нельзя соединиться через OLE DB Provider for Jet с таблицей dBASE IV - ищет файлы *.mdb?


 
sniknik ©   (2002-11-08 22:42) [7]

1. Ну да.
2. Каталог "База", аналог MDF файла MSSQL содержащего базу.
3. ADOCommand или ADODataset можно также но нежелательно ADOQuery. Либо при конекте через BDE (совсем нехорошо) Query. А в общем то дело привычки. Для тестов запроса пользуйся Query Analiser-ом из поставки MSSQl.
4. *.mdb это родной формат, dBASE IV один из ISAM-ов надо указывать в Extended Properties.
вся строка Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;Persist Security Info=False (не всегда именно такая возможны варианты и много)

по моему ты отклонился от вопроса ведь хотел именно из MSSQL (пусть через дельфи) а вопрос последний по прямому соеденению. если это продолжение то ты чтото путаеш.


 
Siv M ©   (2002-11-11 14:26) [8]

Получилось, но не все. Создался линк-сервер, в нем нет таблиц.
Однако никак не получается создать новую таблицу из существующей MS SQL. Запрос такой:

Select * Into MYDBFs.Reportzz from keeper.dbo.report

При этом ругается:

Specified owner name "MYDBFs" either does not exist or you do not have permission to use it.

Как сие пофиксить?


 
sniknik ©   (2002-11-11 15:03) [9]

Ну на самом деле я ошибся из MSSQL, Select * Into во внешний источнок работать наверное не будет, надо insert into (предварительно создав таблицу, это точно работает). (а может это я сейчас ошибаюсь)
создать можно со строкой как в 4 пункте sniknik © (08.11.02 22:42) например.

обращение к линку не MYDBFs.Reportzz а MYDBFs...Reportzz.

еще с permission -нами, проставь в свойствах линка be made wihtout using a security context
или выполни после создания
EXEC sp_addlinkedsrvlogin MYDBFs,false,NULL,NULL,NULL


 
Siv M ©   (2002-11-12 11:09) [10]

Уже из таблиц могу сделать выборку, а вот создать таблицу, ну никак не получается.
Делаю:

CREATE TABLE MYDBFs...mytable
(
low int,
high int,
myavg AS (low + high)/2
)

Ругается:

The object name "MYDBFs..." contains more than the maximum number of prefixes. The maximum is 2.

Пишу тогда так:

CREATE TABLE MYDBFs.mytable
(
low int,
high int,
myavg AS (low + high)/2
)

Не ругается, но и в директории таблицу не создает. Вообшем то ее вообще нигде нет.
Что за ерунда?!


 
sniknik ©   (2002-11-12 11:15) [11]

подключись со строкой
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;Persist Security Info=False
(другой коннект сделай только для создания таблиц)
с таким конектом запускай ADOCommand c

CREATE TABLE mytable
(
low int,
high int
)

myavg AS (low + high)/2 ?? кстати что это? новый способ определения поля, где узнал? так поля не задают, поменяй.


 
Siv M ©   (2002-11-12 17:08) [12]

В стандартном Хелпе по MSSQL есть данный примерчик вместе с myavg AS (low + high)/2.

Ну а вообще, все получилось!!!


 
sniknik ©   (2002-11-12 18:21) [13]

а понятно, ну так то MSSQL! там еще и не то возможно, это не поле а привязаная функция, для dbf такое не катит с сожалению. :(.



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

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

Наверх




Память: 0.5 MB
Время: 0.01 c
4-93308
psiho
2002-10-14 21:13
2002.11.28
Процессы и потоки


7-93264
brestmarket
2002-09-26 15:14
2002.11.28
Как определить, что запуск приложения произвели с CD-ROM?


14-93217
kull
2002-11-01 16:55
2002.11.28
Есть ли программа для составления конечных автоматов?


14-93243
Фикус
2002-11-11 09:33
2002.11.28
помогите реанимировать


7-93275
Timon
2002-09-27 13:24
2002.11.28
Глобальная память в DLL