Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
 jscript: получить файл формата dbf  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 700
Классическая картина маслом: Office2007, надо файл Excel сохранить в dbf, а оно ж, соответственно, невозможно. Понижение версии, LibreOffice...
Почему спрашиваю тут? Нужно эти танцы автоматизировать для пользователей. Что у них может стоять- да что угодно из зоопарка Excel- может, и 2003, в котором форматировочные возможности вполне при нем. Пишу программулину на эту тему на jscripte, hta.Телодвижения происходят локально, на клиенте. Залезть запросом в Excel файл могу, создать и записать файл формата txt, используя ADODB.Stream- могу, в прошлом так XML формировала. Вопрос: можно ли при помощи этого самого ADODB.Stream получить dbf-файл? Ну или есть какие-то еще варианты? Спасибо заранее.
19 дек 18, 16:29    [21768568]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
SQLPowerUser
Member

Откуда: ссылка в профиле
Сообщений: 271
natalitvinenko
Залезть запросом в Excel файл могу
Это хорошо.
Тогда бежим по Recordset и пишем в dbf, примерно как в образце:
Dim conn, path, s
path = "d:\"
Set conn = CreateObject("ADODB.Connection")
s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";User ID=Admin;Password=;Extended Properties=dBase IV"
conn.Open (s)
conn.Execute "create table dbftable (ID_N int, dt date, info char(100))"
conn.Execute "insert into dbftable (ID_N , dt, info) values (1, '2010/05/31', 'abcde')"
conn.Close
Set conn = Nothing
19 дек 18, 16:45    [21768596]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
SQLPowerUser
Member

Откуда: ссылка в профиле
Сообщений: 271
з.ы. Мне когда-то хорошо помогла эта статья: Использование библиотеки ADO (Microsoft ActiveX Data Object)
19 дек 18, 17:00    [21768617]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 700
SQLPowerUser
s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";User ID=Admin;Password=;Extended Properties=dBase IV"
conn.Open (s)

Есть сразу предельно глупый вопрос: если мы пишем "Microsoft.Jet.OLEDB.4.0"- значит ли это, что у пользователя должен быть Аксес или оно и не в версии Pro присутствует? Просто заведомо исходила из того, что Акс может стоять, а может и нет, последнее более вероятно. Извиняюсь, что сразу не оговорила такого обстоятельства.
20 дек 18, 10:13    [21769199]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
SQLPowerUser
Member

Откуда: ссылка в профиле
Сообщений: 271
natalitvinenko,

Access не нужен. У меня на компьютере был установлен Word/Excel и всё работало :)
20 дек 18, 12:09    [21769331]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
vkle
Member

Откуда: Самара
Сообщений: 14367
natalitvinenko
Есть сразу предельно глупый вопрос: если мы пишем "Microsoft.Jet.OLEDB.4.0"- значит ли это, что у пользователя должен быть Аксес или оно и не в версии Pro присутствует?
По большому счету, MS Office не нужен. Достаточно наличия "в компьютере" необходимой библиотеки.
Однако, для 64-бит потребуется Microsoft.ACE.OLEDB.12.0 скорее всего.
20 дек 18, 12:31    [21769364]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 700
SQLPowerUser
natalitvinenko
Залезть запросом в Excel файл могу
Это хорошо.
Тогда бежим по Recordset и пишем в dbf, примерно как в образце:


не идет кабан в скворешник:-(
var fileURL2 = new String(window.location.pathname);
pathhhh=fileURL2;
pathhhh=pathhhh.substr(0,pathhhh.lastIndexOf("\\")+1);

var conn = new ActiveXObject("ADODB.Connection");
s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pathhhh & ";User ID=Admin;Password=;Extended Properties=dBASE IV";
/////s = "Provider=VFPOleDB;Data Source=" & pathhhh;
conn.Open (s);
conn.Execute("create table dbftable (ID_N int, dt date, info char(100))");
conn.Execute("insert into dbftable (ID_N , dt, info) values (1, '2010/05/31', 'abcde')");
conn.Close;

не могу, грит, источник найти. Лазила уточнить сроку подключения(https://www.connectionstrings.com/microsoft-jet-ole-db-4-0/)- вроде один в один. Только там dBASE большими буквами- думала, уже в это упирается. Не помогло.
А вот так идет как дышит
var WshShell = new ActiveXObject( 'WScript.Shell' );
var  connection = new ActiveXObject("ADODB.Connection"),recordset = new ActiveXObject("ADODB.Recordset");
 alert(pathhhh+"/"+"2003.dbf");
connection.Open("Provider=VFPOleDB;Data Source="+pathhhh+"2003.dbf");
try {

    connection.Execute("create table dbftable (ID_N int, dt date, info char(100))");
connection.Execute("insert into dbftable (ID_N , dt, info) values (1, '2010/05/31', 'abcde')");
} catch(e) {}

Файл новосозданный в папке обнаруживается, успешно открывается. Но без указания пути с конкретным файлом- не хочет. Указала ему что угодно, что в папке валяется- да пожалуйста.
То есть задача,в принципе, кривоватенько(нужно все время dbf с собой тягать), но решена. За что спасибо SQLPowerUser .
Если есть варианты, как от этого подставного избавится- было бы здорово.
20 дек 18, 14:13    [21769551]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 700
SQLPowerUser, все таки- спрошу еще. Кодировка получающегося файла dbf. Зависит только от настроек в "источниках данных" панели управления или можно как-то еще?
27 дек 18, 14:57    [21774852]     Ответить | Цитировать Сообщить модератору
 Re: jscript: получить файл формата dbf  [new]
SQLPowerUser
Member

Откуда: ссылка в профиле
Сообщений: 271
natalitvinenko,

с Новым Годом!

Сложно сказать. Я с dbf последний раз работал очень давно, и на старых системах проблем с кодировкой не было.
Посмотрите здесь, там и через реестр предлагают, и через строку подключения...
1 янв 19, 11:17    [21777308]     Ответить | Цитировать Сообщить модератору
Все форумы / HTML, JavaScript, VBScript, CSS Ответить