Последняя версия DataExpress 3 beta от 27 мая 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

импорт из *.ods;*.xls;*.csv;*.xlsx

Все о том как сделать что-то с помощью скриптов.
rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

импорт из *.ods;*.xls;*.csv;*.xlsx

Сообщение rausNT » Вт мар 13, 2018 12:36 pm


jurist23rus
Эксперт
Сообщения: 2165
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: импорт из .csv

Сообщение jurist23rus » Вт мар 13, 2018 12:45 pm

rausNT писал(а):Не могу разобраться с Locate. Хотелось бы настроить уникальный поиск по трем компонентам: № платежки, дата платежки и сумма платежа. Подскажите как это можно осуществить.

Locate ищет только по одному полю. Если нужно по нескольким, то тут лучше воспользоваться OpenRecords ('фильтр') или еще более гибкий и мощный вариант - это TdxSQLQuery.

rausNT писал(а):Нет ли возможности "на лету" конвертировать в csv? Заранее спасибо!

Штатной нет, а там как придумаете.
Destiny is a very convenient word for those who never take decisions.

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: импорт из .csv

Сообщение rausNT » Вт мар 13, 2018 1:02 pm

jurist23rus писал(а):то тут лучше воспользоваться OpenRecords ('фильтр') или еще более гибкий и мощный вариант - это TdxSQLQuery.


а можно какой то пример?

Аватара пользователя
admin
Разработчик
Сообщения: 3535
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: импорт из .csv

Сообщение admin » Вт мар 13, 2018 1:44 pm

В OpenRecords фильтр задается точно так же, как условие отбора в настройке роли. С TdxSQLQuery:

Код: Выделить всё

function RecordExists(P1, P2, P3: String): Boolean;
var
   SQL: String;
begin
   SQL := Format('select id from [форма] where [поле1]="%s" and [поле2]=%s and [поле3]=%s', [P1, P2, P3]);
   with SQLSelect(SQL) do
   begin
      Result := RecordCount > 0;
      Free;
   end;
end;

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: импорт из .csv

Сообщение rausNT » Вт мар 13, 2018 1:51 pm

admin писал(а):В OpenRecords фильтр задается точно так же, как условие отбора в настройке роли. С TdxSQLQuery:


спасибо, попробую...

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: импорт из .csv

Сообщение rausNT » Вт мар 13, 2018 3:45 pm

не получается, опа выходит...
короче наколхозил еще одно поле, куда слил уникальность платежа

Код: Выделить всё

   Search := WinCPToUtf8(SL[num_number_column]) +  WinCPToUtf8(SL[num_sum_column]) + WinCPToUtf8(SL[num_date_column])  ;

   if   deistvia.Locate('контроль_уникальности_платежа', Search, []) then
   begin
    MsgBox('Уже есть', '"Этот платеж ' + Search +  ' уже есть в БД.');
   end; 


теперь нужно победить конвертацию в командной строке из ods в csv.

cordek
Интересующийся
Сообщения: 213
Зарегистрирован: Вс май 14, 2017 2:53 pm

Re: импорт из .csv

Сообщение cordek » Пт мар 16, 2018 7:38 am

Можете весь скрипт выложить?

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: импорт из .csv

Сообщение rausNT » Пт мар 16, 2018 8:37 am

cordek писал(а):Можете весь скрипт выложить?


чуть позже, пока в процессе допила.

rausNT
Опытный
Сообщения: 379
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: импорт из .csv

Сообщение rausNT » Пт мар 16, 2018 10:48 am

подскажите, как дать время для обработки скрипта

Код: Выделить всё

ShellExecute('open','C:\XlsToCsv.vbs', FileName   + ' import.csv', ExtractFilePath(FileName), 1 );


ShellExecute может как то вернуть true?

или sleep может быть?

(может есть у кого онлайн справочник по синтаксису языка, не могу найти почему то)

jurist23rus
Эксперт
Сообщения: 2165
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: импорт из .csv

Сообщение jurist23rus » Пт мар 16, 2018 11:20 am

ShellExcecute - это функция и она возвращает булево значение, но проблема в том, что значение будет возвращено сразу после запуска приложения, а если же нужно дождаться выполнения какой-то работы запущенным приложением то самый простой способ, но не самый надёжный - это после ShellExcecute вызывать sleep.

Что конкретно вы не можете найти по синтаксису?
Destiny is a very convenient word for those who never take decisions.


Вернуться в «Общие вопросы.»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость