Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];

Вниз

Создание таблицы в формате 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
8-93153
VEG
2002-07-28 00:22
2002.11.28
BASS.DLL version 1.5a


4-93291
Alexander
2002-10-17 14:24
2002.11.28
Вопрос по директивам условной компиляции:


3-92940
Dimonka
2002-11-11 22:44
2002.11.28
Ссылочная целостность


14-93204
PaRL
2002-11-09 13:09
2002.11.28
LPARAM - Этап 1 - Обучение...


1-93108
ctapik-net
2002-11-17 17:25
2002.11.28
Стандартный диалог





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский