Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Есть куча dbf нужно перевести её в Access  [new]
mod
Member

Откуда:
Сообщений: 2273
Поможите люди добрые, плз!
Есть очень большое кол-во файлов от FoxPro 2.6 (dbf) необходимо их конвертнуть скопом в Access. Вроде есть какая-то утиля, но забыл какая....
Если кто знает, подскажите плз...
26 июл 04, 17:04    [835789]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
neal
Member

Откуда: Сердце Москвы
Сообщений: 492
или Access 97, потом A97->A2000/A2002
или через DTS SQL Server 2000 откуда угодно куда угодно.
26 июл 04, 17:10    [835821]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
mod
Member

Откуда:
Сообщений: 2273
Файлов очень много. Боюсь как бы не к тысяче.... Месяц понадобится все открыть и пересохранить в Access. Так мона и загнутся...
27 июл 04, 10:45    [837111]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
Kach
Member

Откуда: Украина: Луганск
Сообщений: 113
а их структура одинакова?
27 июл 04, 11:12    [837298]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
Анатолий ( Киев )
Guest
Если нет МЕМО полей (FPT файлов) и кодировка DOS-овская, то файлы FoxPro 2.6 ничем не отличаются от dBase III. Можно в цикле выполнить TransferDatabase или специально настроенный запрос на создание таблицы, и закачать все файлы.
С МЕМО и/или ANSI кодировкой посложнее, но тоже решаемо.
27 июл 04, 15:27    [838873]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
mod
Member

Откуда:
Сообщений: 2273
Dos кодировка. Memo полей до кучи....
29 июл 04, 11:23    [844778]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
mod
Member

Откуда:
Сообщений: 2273
Структура у них разная. Иначе не было бы смысла в такм большом числе файлов....
29 июл 04, 11:25    [844792]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
Vlad007
Guest
У меня примерно такая же задача. Я делаю так - программа на C# читает файл с командами, управляющими файлом MDB (через автоматизацию и ADO.NET)
Программа:
// Необходимо Add Reference на Interop.Access.dll, которая находится в каталоге OBJ!
// Другие дополнительные ссылки - не нужны.

using System;
using System.Data.OleDb;
using System.IO;
using System.Data;
namespace CmdMdbC {
class CmdMdbC {
[STAThread]
static void Main(string[] args) {
string sFile = "Cmd.txt";
if(args.Length >0 ) sFile=args[0];
StreamReader rd = new StreamReader( new FileStream("Cmd.txt", FileMode.Open) ); //для чтения файла команд
string sMdb = rd.ReadLine();
OleDbConnection cn = new OleDbConnection();
OleDbCommand cmdUpd = cn.CreateCommand();

cn.ConnectionString = @"Data Source=""" + sMdb + @""";Provider=Microsoft.Jet.OLEDB.4.0";
try{
cn.Open();
}catch(Exception exc){
Console.WriteLine(exc.ToString());
}
while( (cmdUpd.CommandText = GetCmd(rd, cn)) != null ) {
Console.WriteLine(cmdUpd.CommandText);
try { cmdUpd.ExecuteNonQuery(); }
catch(Exception exc) { Console.WriteLine(cmdUpd.CommandText + " : \n" + exc.ToString()); cn.Close(); }
}
cn.Close();
Console.WriteLine("Всё!");
}
static string GetCmd(StreamReader rd, OleDbConnection cn) {
string[] sArr;
string sCmd;
A:
string s=rd.ReadLine();
if(s==null) return null;
s.Trim();
sArr=s.Split();
sCmd=sArr[0].ToUpper();
switch(sCmd){
case "IMPORT" :
cn.Close();
CmdImport(s, rd);
cn.Open();
goto A;
break;
}
return s;
}

static void CmdImport(string s, StreamReader rd) {
string sPath, sTable,sDbf;
string[] sArr;
int n;
Access.Application oAccess = null;
oAccess = new Access.ApplicationClass();

s=s.Substring(7);
n=s.IndexOf("|",0);
sPath=s.Substring(0,n);
sArr=sPath.Split('\\');
n=sArr.Length;
sDbf=sArr[n-1];
sPath=string.Join("\\",sArr,0,n-1);
sArr=s.Split('|');
sTable=sArr[1];
// Open a database in exclusive mode:
oAccess.OpenCurrentDatabase( @"c:\VTA\myDB.mdb", true, "" ); //Exclusive
oAccess.DoCmd.TransferDatabase( 0, "dBase III", @"C:\vta\", 0, sDbf, sTable, Type.Missing, Type.Missing);
oAccess.CloseCurrentDatabase();
}
}
}
//-----------------------------
Пример командного файла:

c:\VTA\myDB.MDB
Import C:\VTA\LK.DBF|Table1
Import C:\VTA\empl.dbf | Table2
...

Первая строка - имя MDB файла
Последующие - команды на импорт: имя dbf + имя создаваемой таблицы.
Успехов!
1 авг 04, 08:56    [851167]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
Vlad007
Guest
Прошу пардону, это не для MEMO полей...
1 авг 04, 09:08    [851168]     Ответить | Цитировать Сообщить модератору
 Re: Есть куча dbf нужно перевести её в Access  [new]
mod
Member

Откуда:
Сообщений: 2273
Попробуем C#
2 авг 04, 09:47    [851644]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить