home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 July / PCWorld_2001-07_cd.bin / Software / Komercni / software602 / cnv_ifp.exe / I_IMPEX0.PGM < prev    next >
Text File  |  2001-02-12  |  9KB  |  268 lines

  1. {$$3249893653 .                              }include
  2.  
  3. var
  4.   impexp_path    : string[256];
  5.   impexp_tabname : string[256];
  6.   
  7. function ImpExp_ExpAllExternal;
  8. begin
  9.   ImpExp_ExExpAllExternal(path, Current_application);
  10. end;
  11.  
  12. function ImpExp_ExExpAllExternal;
  13. var
  14.   curs    : cursor;
  15.   err     : boolean;
  16.   i       : integer;
  17.   recnum  : trecnum;
  18.   tabname    : string[62];
  19.   tabname2   : string[31];
  20.   filename   : string[254];
  21.   statustext : string[254]; 
  22.   sqlstat    : string[254];
  23. begin
  24.   Set_cursor(1); 
  25.  
  26.   sqlstat := "DELETE FROM _export_tables";
  27.   if SQL_execute(sqlstat) then Signalize;
  28.  
  29.   sqlstat := "SELECT Tab_name FROM Tabtab WHERE Tab_name<>""_export_tables"" AND Apl_uuid=(SELECT Apl_uuid FROM Objtab WHERE Obj_name="""+app_name+""" AND Category=chr(CATEG_APPL))";
  30.   if Open_SQL_cursor(curs, sqlstat) then 
  31.     begin
  32.       Signalize;
  33.       ImpExp_ExExpAllExternal := false
  34.     end  
  35.   else
  36.     begin
  37.       Rec_cnt(curs,recnum);
  38.       ProgressInit((recnum+1)*2,"Exportuji databßzi...","");
  39.       
  40.       Set_cursor(1);
  41.       i := 0; err := false;
  42.       while ((i<recnum) and not err) do begin
  43.  
  44.         tabname := curs[i].tab_name;
  45.         tabname2 := app_name+"."+tabname;
  46.         if path[StrLength(path)]<>"\" then path := path+"\";
  47.         filename := path+tabname+".tdt";
  48.  
  49.         Upcase(tabname);
  50.  
  51.         Set_cursor(1);
  52.         statustext := "Uvol≥uji zßznamy v tabulce "+tabname+". Prosφm, Φekejte...";
  53.         Set_status_text(statustext);
  54.         ProgressStep("Exportuji databßzi...",statustext);
  55.         sqlstat := "CALL Free_deleted("""+tabname2+""")";
  56.         if Sql_execute(sqlstat) then
  57.           begin
  58.             Set_cursor(0);
  59.             MessageBox(nil, "Nastala chyba p°i uvol≥ovßnφ zßznam∙. Lze vÜak pokraΦovat.", "Chyba!", mb_ok+mb_stop);
  60.           end;
  61.  
  62.         statustext := "Exportuji tabulku "+tabname2+" do souboru "+filename+". Prosφm, Φekejte...";
  63.         Set_status_text(statustext);
  64.         ProgressStep("Exportuji databßzi...",statustext);
  65.       
  66.         Set_cursor(1);
  67.         if not Move_data(-1,tabname2,-1,filename,10,0,-1,-1,true) then
  68.           begin
  69.             Set_cursor(0);
  70.             if MessageBox(nil, "P°i exportu nastala chyba. P°ejete si v exportu"#13#10"p°esto pokraΦovat dßle?", "Chyba!", mb_yes_no+mb_stop) = 6 then              
  71.               err := false
  72.             else
  73.               err := true;
  74.           end
  75.         else
  76.           begin
  77.             impexp_tabname := tabname;
  78.             sqlstat :="INSERT INTO _export_tables (tabname) VALUES (:<impexp_tabname)";
  79.             SQL_execute(sqlstat);
  80.           end;
  81.         i := i+1;
  82.       end;           
  83.       close_cursor(curs);
  84.       if not err then begin
  85.         filename := path+"_export_tables.tdt";
  86.  
  87.         // uvoln∞nφ zßznam∙ v _export_tables
  88.         Set_cursor(1);
  89.         statustext := "Uvol≥uji zßznamy v tabulce _EXPORT_TABLES. Prosφm, Φekejte...";
  90.         Set_status_text(statustext);
  91.         ProgressStep("Exportuji databßzi...",statustext);  
  92.         sqlstat := "CALL Free_deleted(""_EXPORT_TABLES"")";
  93.         if Sql_execute(sqlstat) then
  94.           begin
  95.             Set_cursor(0);
  96.             MessageBox(nil, "Nastala chyba p°i uvol≥ovßnφ zßznam∙. Lze vÜak pokraΦovat.", "Chyba!", mb_ok+mb_stop);
  97.           end;
  98.  
  99.         Set_cursor(1);
  100.         statustext := "Exportuji tabulku _EXPORT_TABLES do souboru "+filename+". Prosφm, Φekejte...";
  101.         Set_status_text(statustext);
  102.         ProgressStep("Exportuji databßzi...",statustext);
  103.         err := not Move_data(-1,"_export_tables",-1,filename,10,0,-1,-1,true);      
  104.       end;
  105.  
  106.       Set_status_text("");
  107.       ProgressDone;
  108.       Set_cursor(0);
  109.       if not err then ImpExp_ExExpAllExternal := true
  110.       else ImpExp_ExExpAllExternal := false
  111.     end;
  112. end;
  113.  
  114. function ImpExp_ImpAllExternal;
  115. begin
  116.   ImpExp_ExImpAllExternal(path, Current_application);
  117. end;
  118.  
  119. function ImpExp_ExImpAllExternal;
  120. var
  121.   curs    : cursor;
  122.   err     : boolean;
  123.   i       : integer;
  124.   recnum  : trecnum;
  125.   tabname    : string[31];
  126.   filename   : string[254];
  127.   statustext : string[254]; 
  128.   sqlstat    : string[254];
  129.   infotext   : string[255];
  130. begin
  131.   err := false;
  132.   
  133.   Set_cursor(1);
  134.   #sqlbegin 
  135.     DELETE FROM _export_tables
  136.   #sqlend
  137.   sqlstat := "CALL Free_deleted (""_EXPORT_TABLES"")";
  138.   statustext := "Uvol≥uji zruÜenΘ zßznamy z tabulky _EXPORT_TABLES. Prosφm, Φekejte...";
  139.   Set_status_text(statustext);
  140.   if SQL_execute(sqlstat) then
  141.     begin
  142.       Set_cursor(0);
  143.       MessageBox(nil, "Nastala chyba p°i uvol≥ovßnφ zßznam∙. Lze vÜak pokraΦovat.", "Chyba!", mb_ok+mb_stop);
  144.     end;
  145.  
  146.   Set_cursor(1);
  147.   if path[StrLength(path)]<>"\" then path := path+"\";
  148.   filename := path+"_export_tables.tdt";  
  149.   statustext := "Importuji tabulku _export_tables.tdt ze souboru "+filename+". Prosφm, Φekejte...";
  150.   Set_status_text(statustext);
  151.   if Move_data(-1,filename,-1,"_export_tables",0,10,-1,-1,true) then
  152.     begin
  153.       #sqlbegin
  154.         FOR row AS curs SENSITIVE CURSOR FOR
  155.           SELECT * FROM _export_tables
  156.         DO
  157.           UPDATE _export_tables SET _order=Ri_impexporder(row.tabname) WHERE tabname=row.tabname;
  158.         END FOR;
  159.       #sqlend
  160.       if Open_SQL_cursor(curs,"SELECT * FROM _export_tables WHERE tabname<>""_export_tables"" ORDER BY `_order`") then 
  161.         begin
  162.           Signalize;
  163.           err := true;
  164.         end
  165.       else
  166.         begin         
  167.           rec_cnt(curs,recnum);
  168.           ProgressInit(recnum*3,"Importuji databßzi...","");
  169.  
  170.           // smazat obsah vÜech indexovan²ch tabulek
  171.           i := 0;
  172.           while ((i<recnum) and (not err)) do
  173.             begin
  174.               tabname := curs[i].tabname;
  175.               sqlstat := "DELETE FROM `"+tabname+"`";
  176.               statustext := "Ma₧u obsah tabulky "+tabname+". Prosφm, Φekejte...";
  177.               ProgressStep("Importuji databßzi...",statustext);
  178.               Set_status_text(statustext);
  179.               if SQL_execute(sqlstat) then 
  180.                 begin
  181.                   Signalize;
  182.                   err := true;
  183.                 end
  184.               else
  185.                 begin
  186.                   sqlstat := "CALL Free_deleted ("""+tabname+""")";
  187.                   statustext := "Uvol≥uji zruÜenΘ zßznamy z tabulky "+tabname+". Prosφm, Φekejte...";
  188.                   ProgressStep("Importuji databßzi...",statustext);
  189.                   Set_status_text(statustext);
  190.                   if SQL_execute(sqlstat) then
  191.                     begin
  192.                       Set_cursor(0);
  193.                       MessageBox(nil, "Nastala chyba p°i uvol≥ovßnφ zßznam∙. Lze vÜak pokraΦovat.", "Chyba!", mb_ok+mb_stop);
  194.                     end;
  195.                 end;
  196.               i := i+1;
  197.             end;
  198.  
  199.           Set_cursor(1);
  200.           i := 0;
  201.           while ((i<recnum) and (not err)) do
  202.             begin
  203.               tabname := curs[i].tabname;
  204.               filename := path+tabname+".tdt";
  205.               statustext := "Importuji tabulku "+tabname+" ze souboru "+filename+". Prosφm, Φekejte...";
  206.               ProgressStep("Importuji databßzi...",statustext);
  207.               Set_status_text(statustext);
  208.               if not Move_data(-1,filename,-1,tabname,0,10,-1,-1,true) then
  209.                 begin
  210.                   err := true;
  211.                   infotext := "Nastala chyba p°i importu tabulky "+tabname+" ze souboru "+filename+".";
  212.                   MessageBox(nil, infotext, "Chyba!", mb_ok+mb_stop);   
  213.                 end;
  214.               i := i+1;
  215.             end;
  216.           close_cursor(curs);
  217.         end; 
  218.     end
  219.   else
  220.     err := true;
  221.  
  222.   ProgressDone;
  223.   Set_status_text("");
  224.   Set_cursor(0);
  225.  
  226.   if not err then ImpExp_ExImpAllExternal := true
  227.   else 
  228.     ImpExp_ExImpAllExternal := false
  229. end;
  230.  
  231. procedure ImpExp_AImpExp;
  232. begin
  233.   impexp_path := path;
  234.   Vi_089.OPEN(nil);
  235. end;
  236.  
  237. procedure ImpExpSelectDir;
  238. var
  239.   dirname : string[255];
  240. begin
  241.   dirname := Vi_089.EDIT5.VALUE;
  242.   if Select_directory(Vi_089.HANDLE, dirname) then
  243.     Vi_089.EDIT5.VALUE := dirname;  
  244. end;
  245.  
  246. procedure ImpExp_ImpExecute;
  247. begin
  248.   if MessageBox(nil, "VÜechna souΦasnß data budou zruÜena. Opravdu si"#13#10"p°ejete provΘst import?", "Dotaz", mb_yes_no+mb_quest) = 6 then begin    
  249.     Vi_089.CLOSE;
  250.     ImpExp_ImpAllExternal(impexp_path);
  251.     MessageBox(nil, "Provedeno.", "Info", mb_ok+mb_info);
  252.   end;
  253. end;
  254.  
  255. procedure ImpExp_ExpExecute;
  256. begin
  257.   if MessageBox(nil, "Opravdu si p°ejete provΘst export databßze?", "Dotaz", mb_yes_no+mb_quest) = 6 then begin    
  258.     Vi_089.CLOSE;
  259.     ImpExp_ExpAllExternal(impexp_path);
  260.     MessageBox(nil, "Provedeno.", "Info", mb_ok+mb_info);
  261.   end;
  262. end;
  263.  
  264. function  ImpExp_GetLastDir;
  265. begin
  266.   ImpExp_GetLastDir := impexp_path;  
  267. end;
  268.