Экспорт CSV в галактику с созданием польз. интерфеса

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Mekhtiev
Постоянный гость
Сообщения: 92
Зарегистрирован: 24 янв 2013, 16:33

Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение Mekhtiev »

Уважаемые коллеги, вот только зарегистрировался на форуме. Скажу сразу я "чайник", владею пока только языком SQL и пишу запросы для формирования отчетов. Сейчас встала задача сверять данные с одной программы и галактики, база berkeley с базой не могу работать и поэтоу выгруженные очеты со сторонней программы в формате CSV нужно загружать в созданную таблицу в галактику..Получается что для загрузки нужно написать интерфейс (создовать помоему временную таблицу надо). Обясните мне пожалуйста какие по шагам мне выполнять действия как правильно это реализовать.
ВБР РУЛИТ)))ИС3
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение RAJAH »

Отсюда скачиваем vipprogr.chm, читаем про команду import, переводим csv в txt и импортируем с помощью модуля "SQL" программы SUPPORT (есть ещё вариант со строчным компилятором вместо support, но для "чайника", боюсь, сложновато будет).
А как Вы собираетесь импортировать, если "с базой не могу работать"? :???:
Mekhtiev
Постоянный гость
Сообщения: 92
Зарегистрирован: 24 янв 2013, 16:33

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение Mekhtiev »

имел ввиду что в Visual Studio не возможно подключаться к базе "беркли" нашей программы , чтоб запросом получать данные и формировать отчет сравнивающий данные с данными в галактике.
ВБР РУЛИТ)))ИС3
Mekhtiev
Постоянный гость
Сообщения: 92
Зарегистрирован: 24 янв 2013, 16:33

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение Mekhtiev »

RAJAH писал(а):Отсюда скачиваем vipprogr.chm, читаем про команду import, переводим csv в txt и импортируем с помощью модуля "SQL" программы SUPPORT (есть ещё вариант со строчным компилятором вместо support, но для "чайника", боюсь, сложновато будет).
А как Вы собираетесь импортировать, если "с базой не могу работать"? :???:
Спасибо за подсказку, но забыл уточнить что создание именно интерфейса нужно, так как выгруженную таблицу с программы мониторинга - регулярно должен специалист другого будет импортировать в галактике, а потом заходя на SQL Server Reporting Services выгружать отчет сравнивающий данные галактики (запрос то напишу без проьлем) и данные программы мониторинга.
ВБР РУЛИТ)))ИС3
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение RAJAH »

Тогда "вариант со строчным компилятором", то бишь батник делать (если я правильно понял, что интерфейс - это то, что будет время от времени запускаться).

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

<<каталог Галактики>>vip.exe lot.lot /c:russia81.cfg
где lot.lot - файл с кодом запроса, russia81.cfg - файл с параметрами конфигурации.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение m0p3e »

Правильнее писать интерфейс и загружать данные с помощью xl-функций.
Mekhtiev черканите письмо m<ноль>p<три>e<at>mail.ru - вечерком скину примерчик какой-нибудь несложный.
Mekhtiev
Постоянный гость
Сообщения: 92
Зарегистрирован: 24 янв 2013, 16:33

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение Mekhtiev »

Vip файл компилируется но результата нету.

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

table struct local wialonprobeg  //ключевое слово для задания имени физической таблицы, которая является корневой для данного видимого элемента   Признак главного (внешнего) цикла по SQL-таблице. Используется в конструкции ".table blank".
   (nrec:comp,
    Tmarka:string,
    probeg:double,
    probegs:double )

    with index (uniqal=nrec);  // задаем индекс

Interface Wialon 'Импорт данных с Wialon' EscClose;   //начало описания интерфейса.

show at (,,,);   //ключевое слово для задания размеров видимых элементов и окон.

var  FileName:string;      // раздел объявления переменных.
 f_Tmarka:string; f_probeg:double; f_probegs:double;

create view   //начало описания логической таблицы.
 as
 select *//Поле
 from wialonprobeg; //из таблицы

 File gfFile;

function MyFuncLoadField:string;
{
      var str:string;
      var ch:char;
      str:='';
      ch:=chr(0);

      while ch=chr(10) or ch=chr(13) or ch=';' or ch=chr(0) do
      {
          //if gfFile.EOF() break;
          gfFile.Read(ch);
      }
      while ch<>chr(10) and ch<>chr(13) and ch<>';' do
      {
          //message(string(ch));
          //message(str);
          str:=str+ch;
          //if gfFile.EOF() break;
          gfFile.Read(ch);
      }
      result:=str;

}


procedure LoadFile;
{
      gfFile.OpenFile(filename, stOpenRead);
      var chek:integer;
      chek:=0;
      while not gfFile.EOF() do
      {
          chek :=chek+1;
          if chek=10 then break;

          f_Tmarka:=MyFuncLoadField();
          f_probeg:=MyFuncLoadField();
          f_probegs:=MyFuncLoadField();


          insert current wialonprobeg set
              wialonprobeg.Tmarka  := f_Tmarka,
              wialonprobeg.probeg := f_probeg,
              wialonprobeg.probegs := f_probegs;

      }

      gfFile.Close();
}

screen vibor; // вид окна
  show (,,,);
 fields
 FileName :pickButton;
 buttons
 cmBounds;

  <<
      Выбор файла: .@@@@@@@@@@@@@
      <. Загрузка .>

  >>
  end;

browse tab;
show at(,,,)
  table wialonprobeg;

fields
    Tmarka  #3'Марка' ('Марка ТС',,) : [20], protect;
    probeg #3'Пробег' ('Пробег ТС',,) : [20], protect;
    probegs #3'Скорректированный пробег' ('Скорректированный пробег ТС',,) : [20], protect;

end;

//Panel TR;
//Show At (,,,)



handleEvent         //обработчик событий

cmInit:
{

}
cmPick:
  {
    Case CurField of
        #FileName :
        {
          FileName := GetFileName ('*.csv','Выберите файл с отчетом Wialon');
           Message(filename);
                 LoadFile();
                 ReReadRecord(tnwialonprobeg);
        };

    end;   //Case
  }
end;

end.

В менеджент студио запрос
select * from A$wialonprobeg
а результата нету
Последний раз редактировалось Mekhtiev 01 фев 2013, 12:24, всего редактировалось 1 раз.
ВБР РУЛИТ)))ИС3
Mekhtiev
Постоянный гость
Сообщения: 92
Зарегистрирован: 24 янв 2013, 16:33

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение Mekhtiev »

Так таблицу создал

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

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.A$WialonProbeg
	(
	nrec binary(8) NOT NULL,
	Tmarka varchar(50) NULL,
	Probeg numeric(18, 0) NULL,
	ProbegS numeric(18, 0) NULL
	)  ON [PRIMARY]
GO
COMMIT
ВБР РУЛИТ)))ИС3
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение RAJAH »

Mekhtiev писал(а):table struct local wialonprobeg
Mekhtiev писал(а):В менеджент студио запрос
select * from A$wialonprobegа результата нетууууу
Это нормально: таблица wialonprobeg - временная, существует только при выполнении отчёта/интерфейса в "Галактике"/"Суппорте".
А создавать таблицы прямо на SQL сервере, по-моему, без докомпиляции словаря бесполезно (знатоки точно скажут). Не уверен, что этот метод вам нужен - из пушки по воробьям.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение Den »

Ну то что Вы сделали
CREATE TABLE dbo.A$WialonProbeg
...
в MSSQl Stuido..так не проканает. галактика об этой таблице ничего не знает. Смотрите пост Cruger-a
https://forum.galaktika.ru/viewtopic.php?p=3045#p3045 ( create table....)

table struct local wialonprobeg //ключевое слово для задания имени физической таблицы,

это тоже неправда Этим самым Вы просто создали временную таблицу. Не более...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение edward_K »

1. отредактируй свои сообщения. Удалю. Эмоции могешь в курилке высказывать. Прежде чем делать что то в галактике надо бы vipprogr.chm пролистать. Никто за вас бесплатно ничего не сделает.
2. Если вы хотите создать таблицу для использования ее в галактике напрямую, то и создавать ее нужно в галактике
- она должна прописаться в x$filles , x$fields, x$index - ищи по форуму "Create Table" или создавай новую тему
код таблицы лучше пихать в 32700 и выше , но меньше чем 32764
Обратите внимание, что Alter Dictionary для создания своих таблиц не следует использовать.
Использовать другие можно, но через DSQL.
3. По возможности следует обходится без создания своих таблиц - для временного использования можно объявить таблицу прямо в фейсе - ищи table struct
Mekhtiev
Постоянный гость
Сообщения: 92
Зарегистрирован: 24 янв 2013, 16:33

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение Mekhtiev »

Всем спасибо за посты, выходные почитаю VIPPROGR. Самая большая проблема в том что очень мало я знаю, не программист я - только учусь. единственное что получается нормально это запросы :-) но ничего у нас же есть VIPPROGR :) .
ВБР РУЛИТ)))ИС3
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Экспорт CSV в галактику с созданием польз. интерфеса

Сообщение edward_K »

ну вообще в общем случае проблема с csv в большой длине строки (больше 250)
Вы предполагаете, что Read возмет один символ, но это зависит от типа переменной.
Если заведомо известно, что длина строки меньше, то ReadLn и все.
или все таки как вам советовали изучить xl функции (ExcelLib.pdf) - с длинной строкой там все таки проще.
Иначе как то так

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

  kolstr:=0 ;
  chet:=0 ;
  kolfield:=0 ;
  wstr:='' ;
  filesize_read:=0 ;
  filesize:=SInp.GetSize
  SInp.Seek(0) ;
  While not SInp.EOF and (filesize_read<filesize)
  {   hprt1 :='' ;
      inc(chet)
      if chet>1000 then break ;
      if chet mod 10=0 then nextvisual ; 
//      SInp.readln(hprt1) ;
      SInp.Seek(filesize_read) ;
      SInp.read(hprt1) ;
      if length(hprt1)=0 then break ;
      filesize_read:=filesize_read+length(hprt1) ;
      field_len:=length(hprt1) ;
      if filesize_read>filesize 
      { field_len:=field_len-(filesize_read-filesize) ;
      }
      wstr1:=''
      for(i:=1;i<=field_len;inc(i))
      { 
        If(((IEHead.Reestr And mskDOS)Shr 04h) = 1)
          wstr1:=wstr1+DocBasFn1251To866(substr(hprt1,i,1));
        else  
          wstr1:=wstr1+substr(hprt1,i,1)
      }
// здесь не надо конвертировать      
//      If(((IEHead.Reestr And mskDOS)Shr 04h) = 1)
//        hprt1 := DocBasFn1251To866(hprt1);
      mylog('строка '+string(chet)+',Длина '+string(field_len)) ;
      mylog(wstr1) ;
//      if chet=1 then continue ; // первая строка не нужна.
//      hprt1:=trim(hprt1) ;  
      for(i:=1;i<=length(hprt1);inc(i))
      { if substr(hprt1,i,1)=';'
        or ord(substr(hprt1,i,1))<20 //=chr(13)
        { // конец строки 2 символами 13+10
          if ord(substr(hprt1,i,1))<20 and i>0
          { if ord(substr(hprt1,i-1,1))<20 
            or substr(hprt1,i-1,1)=';'
            then continue ;
          }
          // погасить вывод на пустых строках
          //if kolfield>0 or ord(substr(hprt1,i,1))>20
          PutTofile1 ;
          
          if ord(substr(hprt1,i,1))<20 and (kolfield>0 and kolfield<30)
          { kolfield:=kolfield-1 ;
          }
        }
        else
         wstr:=wstr+substr(hprt1,i,1)
      }
  } ;   
  //if wstr<>'' 
В любом случае вам поможет либо отладка(а да vip.pdf надо тоже почитать), либо что проще logstrtofile (а это уже vipprogr.chm)
временная таблица доступна только в пределах интерфейса. Если нужна ее видимость в других то нужно предпринимать спец.усилия(это реже нужно). В сапорте, что то выбирать из нее бесполезно. Как вариант найти таблицу, которая у вас не используется и не схемы user ( чтобы их видеть в саопрте тоже нужно кое что включить). Например таблица vagon - очень редко используется.
вопрос - а что именно импортируется? В галактике есть модуль обмена бизнес-документами, которые много что позволяет.
Ответить