Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание таблицы в формате dBase-IV [D6, MS SQL]


Siv M ©   (2002-11-07 17:45:00) 

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


sniknik   (2002-11-12 18:21:00) [1]

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


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

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

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


sniknik   (2002-11-12 11:15:00) [3]

подключись со строкой
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 11:09:00) [4]

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

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-11 15:03:00) [5]

Ну на самом деле я ошибся из 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-11 14:26:00) [6]

Получилось, но не все. Создался линк-сервер, в нем нет таблиц.
Однако никак не получается создать новую таблицу из существующей 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-08 22:42:00) [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-08 19:26:00) [8]

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


sniknik   (2002-11-08 17:48:00) [9]

делаеш линк (все командами 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 17:21:00) [10]

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


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

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


Siv M   (2002-11-08 13:25:00) [12]

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


sniknik   (2002-11-07 18:17:00) [13]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо