Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема запрос к Excel - преобразовать тип Время (число прочтений - 1873 )
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
запрос к Excel - преобразовать тип Время
04. Октября 2010 :: 19:21
Печать  
может, кто нибудь уже сталкивался с подобным, не смог победить.
в общем, подключаюсь

Код
Выбрать все
	стрсоединение="DRIVER=Microsoft Excel Driver (*.xls);driverId=790;DBQ=" +СокрЛП(файлxls)+";ReadOnly="+толькочтение+"";

	_база =СоздатьОбъект("ODBCDatabase");
_база.Соединение(стрсоединение);

	_рс =СоздатьОбъект("ODBCRecordSet");
	_рс.УстБД(_база);

..........................

	текстзапроса="select  *
	|from [Лист1$A2:H10000]
	|";

	табданные =СоздатьОбъект("индексированнаятаблица");
	_рс.выполнитьинструкцию(текстзапроса,табданные);


 



есть в этой таблице столбцы, формат ячейки у которых установлен "Время". Хотелось бы и получить его в том же виде, как это выглядит в Excel - типа "10:30"
но на применение cast ругается.
  
Наверх
ICQ  
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: запрос к Excel - преобразовать тип Время
Ответ #1 - 07. Октября 2010 :: 09:59
Печать  
А вто выводит в колонке, строку или число?
  
Наверх
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: запрос к Excel - преобразовать тип Время
Ответ #2 - 08. Октября 2010 :: 07:28
Печать  
если соединение такое, как написано, то выводит что то типа 30.12.99
т.е. вообще никакой инфы. еще пробовал через ADODB, тогда выводит число между 0 и 1. я уже научился в принципе переводить его во время, так что проблема решилась
  
Наверх
ICQ  
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: запрос к Excel - преобразовать тип Время
Ответ #3 - 08. Октября 2010 :: 08:29
Печать  
мде, что то уже впадаю в ступор от этого:
делаю запрос следующим манером


Код
Выбрать все
	Connection=CreateObject("ADODB.Connection");
	RecordSet=CreateObject("ADODB.Recordset");
	Connection.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+сокрлп(выбфайл)+";Extended Properties=""Excel 8.0;HDR=NO;IMEX=1;""";
	Connection.Open();
	RecordSet.ActiveConnection = Connection;
	RecordSet.CursorType = 3;
	RecordSet.LockType = 2;
	RecordSet.Source = "Select * from ["+имялиста+"]";
	RecordSet.Open();	    

 



и далее - перебор всех попавших в выборку записей. и вот начинается мистика: если экселевский файл открыт, то даты попадают в виде числа, например: 40427
а время - в виде числа от 0 до 1. если файл закрыт -
то даты в виде 11.09.2010 (причем, строка), а время - в виде строки "8:25"

интересно, это только для такого соединения такая ботва - нужно следить, открыт или закрыт файл...
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать