powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jscript: получить файл формата dbf
21 сообщений из 21, страница 1 из 1
jscript: получить файл формата dbf
    #39750303
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классическая картина маслом: Office2007, надо файл Excel сохранить в dbf, а оно ж, соответственно, невозможно. Понижение версии, LibreOffice...
Почему спрашиваю тут? Нужно эти танцы автоматизировать для пользователей. Что у них может стоять- да что угодно из зоопарка Excel- может, и 2003, в котором форматировочные возможности вполне при нем. Пишу программулину на эту тему на jscripte, hta.Телодвижения происходят локально, на клиенте. Залезть запросом в Excel файл могу, создать и записать файл формата txt, используя ADODB.Stream- могу, в прошлом так XML формировала. Вопрос: можно ли при помощи этого самого ADODB.Stream получить dbf-файл? Ну или есть какие-то еще варианты? Спасибо заранее.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39750322
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenkoЗалезть запросом в Excel файл могуЭто хорошо.
Тогда бежим по Recordset и пишем в dbf, примерно как в образце:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
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
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39750339
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
з.ы. Мне когда-то хорошо помогла эта статья: Использование библиотеки ADO (Microsoft ActiveX Data Object)
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39750622
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLPowerUser
Код: vbnet
1.
2.
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 присутствует? Просто заведомо исходила из того, что Акс может стоять, а может и нет, последнее более вероятно. Извиняюсь, что сразу не оговорила такого обстоятельства.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39750694
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenko,

Access не нужен. У меня на компьютере был установлен Word/Excel и всё работало :)
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39750717
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenkoЕсть сразу предельно глупый вопрос: если мы пишем "Microsoft.Jet.OLEDB.4.0"- значит ли это, что у пользователя должен быть Аксес или оно и не в версии Pro присутствует?По большому счету, MS Office не нужен. Достаточно наличия "в компьютере" необходимой библиотеки.
Однако, для 64-бит потребуется Microsoft.ACE.OLEDB.12.0 скорее всего.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39750832
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLPowerUsernatalitvinenkoЗалезть запросом в Excel файл могуЭто хорошо.
Тогда бежим по Recordset и пишем в dbf, примерно как в образце:


не идет кабан в скворешник:-(
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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 большими буквами- думала, уже в это упирается. Не помогло.
А вот так идет как дышит
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
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 .
Если есть варианты, как от этого подставного избавится- было бы здорово.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39753954
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLPowerUser, все таки- спрошу еще. Кодировка получающегося файла dbf. Зависит только от настроек в "источниках данных" панели управления или можно как-то еще?
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39755351
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenko,

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

Сложно сказать. Я с dbf последний раз работал очень давно, и на старых системах проблем с кодировкой не было.
Посмотрите здесь , там и через реестр предлагают, и через строку подключения...
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39772387
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLPowerUser, с кодировкой получилось двояко. С одной стороны, читала, что надо просто тупо на компе в источниках данных указать, что формат не dBASE V, а dBASE IV. У меня так было настроено, у начальницы нет- возможно, поэтому у меня программа работала, а у нее кодировала непойми шо. Настроила и ей. Во- вторых , тупо прописала в самой строке(не знала, что и так тоже можно):
Код: javascript
1.
connection.Open("Provider=VFPOleDB;Data Source="+pathhhh+"2003.dbf;Extended Properties=dBASE IV;charset=866;");


Пока вроде ко мне вопросов нет.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39772391
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все-таки тему я подниму
natalitvinenkoФайл новосозданный в папке обнаруживается, успешно открывается. Но без указания пути с конкретным файлом- не хочет. Указала ему что угодно, что в папке валяется- да пожалуйста. Если есть варианты, как от этого подставного избавится- было бы здорово.

Не хочется этот подставной файл все время за собой тягать, отдавать в эксплуатацию с костылем. Ну что может быть за проблема, что не отрабатывает без указания файла, не отрабатывает только по указанию папки? Вдумчивое изучение www.connectionstrings.com не помогло...
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39780555
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLPowerUsernatalitvinenkoЗалезть запросом в Excel файл могуЭто хорошо.
Тогда бежим по Recordset и пишем в dbf, примерно как в образце:
Код: vbnet
1.
2.
3.
4.
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



А как вставить из Excel дату? Попытка вставить rs.fields(2).value в одинарных кавычках, в ##- успеха не имеет:-(
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39780557
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenko
А как вставить из Excel дату? Попытка вставить rs.fields(2).value в одинарных кавычках, в ##- успеха не имеет:-(

.. у вас же в примере написано 'YYYY/MM/DD' .. хотя по букварю должно быть без слешей, но если так вставляется, то сначала отформатируйте дату из Экселя (split, или еще как, потом конкатенацией соберите) ...
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39780785
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotiknatalitvinenkoА как вставить из Excel дату? Попытка вставить rs.fields(2).value в одинарных кавычках, в ##- успеха не имеет:-(

.. у вас же в примере написано 'YYYY/MM/DD' .. хотя по букварю должно быть без слешей, но если так вставляется, то сначала отформатируйте дату из Экселя (split, или еще как, потом конкатенацией соберите) ...

Спрашивала потому, что так не сработало. Сама спросила- сама отвечаю. Строка вставки, -при том же объявлении поля даты про создании, как в примере, DATE_D date -будет выглядеть примерно так:
Код: javascript
1.
2.
connection.Execute("insert into ["+name_dbftable+"] ( ABCOUNT,DATE_D) " +
                    "values (  ["+ rs.fields(0).value+" ] , {^"+ rs.fields(1).value+"}");


Не кавычки, а вот фигурные скобочки плюс крышечка:-) спереди.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39780790
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю отвечать на свои же вопросы :-) Вдруг какого горемыку занесет с теми же проблемами. Про подключении к DBF без некоего вспомогательно файла, который там должен заведомо быть, указывая источником данных просто папку. Вот так подключается:
Код: javascript
1.
connection.Open( "Provider=VFPOLEDB.1;Mode=ReadWrite;Data Type=DBF;Extended Properties=dBASE IV;Collating Sequence=RUSSIAN;CODEPAGE=866;DELETED=False;Data Source=" + pathhhh + "\\");


В принципе- версия на тему, таких примеров попадается много. Почему у меня не шло? Уже не вспомню. Наверное, совершила важную ошибку- забыла, что / - это символ экранирования. Когда при отладке поставила один и мне программа упорно начал ругаться на отсутсвие последней двойной кавычки- вот тогда я, кажется, эту затею и бросила. Когда в примере появились две- все заработало.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39780863
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenko,

..не, ну через драйвер ФоксПро и дурак сможет .. :) .. если он есть ..
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39782617
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И снова здравствуйте.
Заголовки.
Созданный dbf файл одни программы открывают без проблем, а тот же Excel2010 не понимает. Заказчик говорит- файл битый. Как это может быть, чтобы получался битый файл? Перед закрытием коннекта что-то дописывать надо? Может, это из-за фокспрошного драйвера? Что- искусственно считать строки и писать в заголовок? никогда этого не делала...
Начальство говорит- не морочь голову, бери файл образец и вставляй в него. Так не вставляет! Виснет на нем, присоединяется, но даже самый простенький insert- дулю. Более того, уже беру свой файл, хочу к нему дописать - дулю. Если вот тут создала таблицу, в нее пишет, берем уже готовую- никак.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
var WshShell = new ActiveXObject( 'WScript.Shell' );
var  connection = new ActiveXObject("ADODB.Connection"),recordset = new ActiveXObject("ADODB.Recordset");
try {
connection.Open( "Provider=VFPOLEDB.1;Mode=ReadWrite;Data Type=DBF;Extended Properties=dBASE IV;charset=866;DELETED=True;Data Source=" + pathhhh + "/"+"Макет.dbf");
 //alert("Присоединились");
}catch(e) {alert("Тупо не подсоединяюсь");
        //self.close();
        };

 /// залить туда из Excel
///////////////////////////////////////////////////////////////
	
        if(!rs.bof)
        {
            rs.MoveFirst()
            while(!rs.eof)
            {
               
                try { 
		//connection.Execute("insert into [" + pathhhh + "Макет.dbf] (CODE_FIRME, ABCOUNT) " +
                //    "values ( 10021, 1 )");
		//alert(pathhhh + "4_532019.DBF");
		connection.Execute("insert into " + pathhhh +  "4_532019.DBF (CODE_FIRME, ABCOUNT) " +
                    "values ( 10021, 1 )");

            
		 //alert("Присоединились");
		}catch(e) {//alert("Не вставляю");
		};
		
                rs.MoveNext()
            }
                
        }
        rs.Close();
        
               
    }catch(e) {//alert("Что-то пошло не так....");
        //self.close();
        };
connection.Close();


Если не закомментировано, вылетает сообщение "не вставляю"
Как я уже задолбалась делать простые и тупые ошибки. Наверняка какая- то фигня не пашет.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39782657
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто создать dbf файл без adodb,jet,foxpro и прочей ереси?
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39782671
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OpenOffice, кстати, может, да ...
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39782791
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,для этого OpenOffice надо поставить на каждую машину, причем именно той версии , какая надо. Не вариант от слова совсем.
...
Рейтинг: 0 / 0
jscript: получить файл формата dbf
    #39782823
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenkocarrotik,для этого OpenOffice надо поставить на каждую машину, причем именно той версии , какая надо. Не вариант от слова совсем.

.. я не совсем понимаю вашей задачи .. какой заказчик требует именно DBF-формат? .. банк? .. почему давно нельзя было согласовать другой формат (XML например) ...? .. это не к вам претензии нисколько .. просто - не понятно ..
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jscript: получить файл формата dbf
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]