Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jscript: получить файл формата dbf / 21 сообщений из 21, страница 1 из 1
19.12.2018, 16:29
    #39750303
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
Классическая картина маслом: Office2007, надо файл Excel сохранить в dbf, а оно ж, соответственно, невозможно. Понижение версии, LibreOffice...
Почему спрашиваю тут? Нужно эти танцы автоматизировать для пользователей. Что у них может стоять- да что угодно из зоопарка Excel- может, и 2003, в котором форматировочные возможности вполне при нем. Пишу программулину на эту тему на jscripte, hta.Телодвижения происходят локально, на клиенте. Залезть запросом в Excel файл могу, создать и записать файл формата txt, используя ADODB.Stream- могу, в прошлом так XML формировала. Вопрос: можно ли при помощи этого самого ADODB.Stream получить dbf-файл? Ну или есть какие-то еще варианты? Спасибо заранее.
...
Рейтинг: 0 / 0
19.12.2018, 16:45
    #39750322
SQLPowerUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
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
19.12.2018, 17:00
    #39750339
SQLPowerUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
з.ы. Мне когда-то хорошо помогла эта статья: Использование библиотеки ADO (Microsoft ActiveX Data Object)
...
Рейтинг: 0 / 0
20.12.2018, 10:13
    #39750622
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
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
20.12.2018, 12:09
    #39750694
SQLPowerUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
natalitvinenko,

Access не нужен. У меня на компьютере был установлен Word/Excel и всё работало :)
...
Рейтинг: 0 / 0
20.12.2018, 12:31
    #39750717
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
natalitvinenkoЕсть сразу предельно глупый вопрос: если мы пишем "Microsoft.Jet.OLEDB.4.0"- значит ли это, что у пользователя должен быть Аксес или оно и не в версии Pro присутствует?По большому счету, MS Office не нужен. Достаточно наличия "в компьютере" необходимой библиотеки.
Однако, для 64-бит потребуется Microsoft.ACE.OLEDB.12.0 скорее всего.
...
Рейтинг: 0 / 0
20.12.2018, 14:13
    #39750832
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
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
27.12.2018, 14:57
    #39753954
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
SQLPowerUser, все таки- спрошу еще. Кодировка получающегося файла dbf. Зависит только от настроек в "источниках данных" панели управления или можно как-то еще?
...
Рейтинг: 0 / 0
01.01.2019, 11:17
    #39755351
SQLPowerUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
natalitvinenko,

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

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


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

Не хочется этот подставной файл все время за собой тягать, отдавать в эксплуатацию с костылем. Ну что может быть за проблема, что не отрабатывает без указания файла, не отрабатывает только по указанию папки? Вдумчивое изучение www.connectionstrings.com не помогло...
...
Рейтинг: 0 / 0
28.02.2019, 17:45
    #39780555
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
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
28.02.2019, 17:56
    #39780557
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
natalitvinenko
А как вставить из Excel дату? Попытка вставить rs.fields(2).value в одинарных кавычках, в ##- успеха не имеет:-(

.. у вас же в примере написано 'YYYY/MM/DD' .. хотя по букварю должно быть без слешей, но если так вставляется, то сначала отформатируйте дату из Экселя (split, или еще как, потом конкатенацией соберите) ...
...
Рейтинг: 0 / 0
01.03.2019, 09:53
    #39780785
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
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
01.03.2019, 09:59
    #39780790
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
Продолжаю отвечать на свои же вопросы :-) Вдруг какого горемыку занесет с теми же проблемами. Про подключении к 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
01.03.2019, 11:39
    #39780863
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
natalitvinenko,

..не, ну через драйвер ФоксПро и дурак сможет .. :) .. если он есть ..
...
Рейтинг: 0 / 0
05.03.2019, 16:55
    #39782617
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
И снова здравствуйте.
Заголовки.
Созданный 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
05.03.2019, 17:57
    #39782657
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
просто создать dbf файл без adodb,jet,foxpro и прочей ереси?
...
Рейтинг: 0 / 0
05.03.2019, 18:35
    #39782671
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
OpenOffice, кстати, может, да ...
...
Рейтинг: 0 / 0
06.03.2019, 09:23
    #39782791
natalitvinenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
carrotik,для этого OpenOffice надо поставить на каждую машину, причем именно той версии , какая надо. Не вариант от слова совсем.
...
Рейтинг: 0 / 0
06.03.2019, 11:15
    #39782823
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jscript: получить файл формата dbf
natalitvinenkocarrotik,для этого OpenOffice надо поставить на каждую машину, причем именно той версии , какая надо. Не вариант от слова совсем.

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


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