Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.52 KB | None | 0 0
  1. unit Unit7;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, mysql55conn, sqldb, db, FileUtil, Forms, Controls,
  9.   Graphics, Dialogs, Menus, ComCtrls, StdCtrls, DBGrids, ExtCtrls, ComObj;
  10.  
  11. type
  12.  
  13.   { TForm7 }
  14.  
  15.   TForm7 = class(TForm)
  16.     Button1: TButton;
  17.     Button2: TButton;
  18.     Button3: TButton;
  19.     Button4: TButton;
  20.     Button5: TButton;
  21.     DataSource1: TDataSource;
  22.     DBGrid1: TDBGrid;
  23.     DBGrid2: TDBGrid;
  24.     Label1: TLabel;
  25.     Label2: TLabel;
  26.     MainMenu1: TMainMenu;
  27.     Memo1: TMemo;
  28.     MenuItem1: TMenuItem;
  29.     MenuItem2: TMenuItem;
  30.     MenuItem3: TMenuItem;
  31.     MenuItem4: TMenuItem;
  32.     MenuItem5: TMenuItem;
  33.     MenuItem6: TMenuItem;
  34.     MySQL55Connection1: TMySQL55Connection;
  35.     OpenDialog1: TOpenDialog;
  36.     PageControl1: TPageControl;
  37.     RadioGroup1: TRadioGroup;
  38.     SQLQuery1: TSQLQuery;
  39.     SQLTransaction1: TSQLTransaction;
  40.     TabSheet1: TTabSheet;
  41.     TabSheet2: TTabSheet;
  42.     procedure Button1Click(Sender: TObject);
  43.     procedure Button2Click(Sender: TObject);
  44.     procedure Button3Click(Sender: TObject);
  45.     procedure Button4Click(Sender: TObject);
  46.     procedure Button5Click(Sender: TObject);
  47.     procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
  48.     procedure FormHide(Sender: TObject);
  49.     procedure FormShow(Sender: TObject);
  50.     procedure MenuItem1Click(Sender: TObject);
  51.     procedure MenuItem2Click(Sender: TObject);
  52.     procedure MenuItem3Click(Sender: TObject);
  53.     procedure MenuItem4Click(Sender: TObject);
  54.     procedure MenuItem6Click(Sender: TObject);
  55.     procedure RadioGroup1Click(Sender: TObject);
  56.   private
  57.  
  58.   public
  59.  
  60.   end;
  61.  
  62. var
  63.   Form7: TForm7;
  64.   excel_path:string;
  65.  
  66. implementation
  67. uses Unit1,Unit2,Unit3,Unit4,Unit5,Unit6;
  68. {$R *.lfm}
  69.  
  70. { TForm7 }
  71.  
  72. procedure TForm7.MenuItem1Click(Sender: TObject);
  73. begin
  74.   Form7.Hide;
  75.   Form1.Show;
  76. end;
  77.  
  78. procedure TForm7.FormShow(Sender: TObject);
  79. begin
  80.   case Unit5.role of
  81.   1:begin
  82.      MenuItem6.Visible:=True;
  83.      MenuItem3.Visible:=True;
  84.    end;
  85.    2:begin
  86.      MenuItem3.Visible:=True;
  87.      MenuItem6.Visible:=False;
  88.    end;
  89.    3:begin
  90.      MenuItem6.Visible:=False;
  91.      MenuItem3.Visible:=False;
  92.    end;
  93.   end;
  94. end;
  95.  
  96. procedure TForm7.Button3Click(Sender: TObject);
  97. var
  98.   query:string;
  99.   i:integer;
  100. begin
  101.   for i:=0 to Memo1.Lines.Count-1 do
  102.      query:=query+Memo1.Lines[i]+' ';
  103.   try
  104.     SQLQuery1.Close;
  105.     SQLQuery1.SQL.Clear;
  106.     SQLQuery1.SQL.Add(query);
  107.     SQLQuery1.Open;
  108.     Button2.Enabled:=True;
  109.   except
  110.     on ESQLDatabaseError do ShowMessage('Некорректный запрос');
  111.     on EDatabaseError do ShowMessage('Задан пустой запрос');
  112.   end;
  113. end;
  114.  
  115. procedure TForm7.Button4Click(Sender: TObject);
  116. begin
  117.  
  118.   if OpenDialog1.Execute then
  119.     excel_path:= OpenDialog1.FileName;
  120.   Button5.Enabled:=True;
  121. end;
  122.  
  123. procedure TForm7.Button5Click(Sender: TObject);
  124. var
  125.   S,S1,S2: string;
  126.   i,j,count: integer;
  127.   Excelapp:Variant;
  128. begin
  129.   Excelapp:=CreateOleObject('Excel.Application');
  130.   Excelapp.WorkBooks.Open(WideString(excel_path));
  131.   ExcelApp.Visible := false;
  132.   case RadioGroup1.ItemIndex of
  133.   0:begin
  134.     count:=4;
  135.     S:='insert into patients(first_name,second_name,birth_date,category_id) values';
  136.   end;
  137.   1:begin
  138.     count:=4;
  139.     S:='insert into doctors(first_name,second_name,speciality_id,category_id) values';
  140.   end;
  141.   2:begin
  142.     count:=2;
  143.     S:='insert into appeals(date,patient_id) values';
  144.   end;
  145.   3:begin
  146.     count:=4;
  147.     S:='insert into treatments(appeal_id,doctor_ID,diagnode_id,treatment_cost) values';
  148.   end;
  149.   end;
  150.  
  151.   for i:=1 to 100 do
  152.   begin
  153.    S1:='(';
  154.    for j:=1 to count do
  155.    begin
  156.       s2:=Excelapp.Cells[i,j].value;
  157.       if(s2<>'')then
  158.            s1:=s1+s2+','
  159.       else
  160.            break;
  161.     end;
  162.    if(S1<>'(') then begin
  163.       Delete(S1,Length(S1),1);
  164.       S:=S+S1+'),';
  165.    end
  166.    else
  167.        break;
  168.    end;
  169.   Delete(S,Length(S),1);
  170.   try
  171.     SQLQuery1.Close;
  172.     SQLQuery1.SQL.Clear;
  173.     SQLQuery1.SQL.Add(S);
  174.     SQLQuery1.ExecSQL;
  175.     SQLTransaction1.Commit;
  176.     ShowMessage('Данные выгружены в БД');
  177.  
  178.     case RadioGroup1.ItemIndex of
  179.     0:S:='select * from patients';
  180.     1:S:='select * from doctors';
  181.     2:S:='select * from appeals';
  182.     3:S:='select * from treatments';
  183.     end;
  184.     SQLQuery1.Close;
  185.     SQLQuery1.SQL.Clear;
  186.     SQLQuery1.SQL.Add(S);
  187.     SQLQuery1.Open;
  188.   finally
  189.    ExcelApp.Quit;
  190.   end;
  191. end;
  192.  
  193. procedure TForm7.FormClose(Sender: TObject; var CloseAction: TCloseAction);
  194. begin
  195.   Application.Terminate;
  196. end;
  197.  
  198. procedure TForm7.FormHide(Sender: TObject);
  199. begin
  200.   SQLQuery1.Close;
  201. end;
  202.  
  203. procedure TForm7.Button1Click(Sender: TObject);
  204. var
  205.   path:string;
  206. begin
  207.   if OpenDialog1.Execute then
  208.    begin
  209.     path:= OpenDialog1.FileName;
  210.     Memo1.Text := ReadFileToString(path);
  211.    end;
  212. end;
  213.  
  214. function IsNumber(a:string):boolean;
  215. var
  216.   n:real;
  217.   c:integer;
  218. begin
  219.   val(a,n,c);
  220.   IsNumber:=c=0;
  221. end;
  222.  
  223. procedure TForm7.Button2Click(Sender: TObject);
  224. var
  225. i,j: Integer;
  226. ExcelApp,Sheet, Workbook: Variant;
  227. s:string;
  228. begin
  229.   if(DBGrid1.Columns.Count=0) then
  230.     ShowMessage('Нет данных для экспорта в Excel')
  231.   else
  232.       begin
  233.          ExcelApp:= CreateOleObject('Excel.Application');
  234.          ExcelApp.Visible:=False;
  235.          Workbook := ExcelApp.WorkBooks.Add;
  236.          Sheet := ExcelApp.Workbooks[1].WorkSheets[1];
  237.          DBGrid1.DataSource.DataSet.First;
  238.          for i:=1 to DBGrid1.DataSource.DataSet.RecordCount do
  239.          begin
  240.               for j:=1 to DBGrid1.DataSource.DataSet.FieldCount do
  241.               begin
  242.                s:=DBGrid1.DataSource.DataSet.Fields[j-1].AsWideString;
  243.                if(IsNumber(s)) then
  244.                    Sheet.cells[i,j]:=DBGrid1.DataSource.DataSet.Fields[j-1].AsWideString
  245.                else
  246.                    Sheet.cells[i,j]:='"'+DBGrid1.DataSource.DataSet.Fields[j-1].AsWideString+'"';
  247.               end;
  248.             DBGrid1.DataSource.DataSet.Next;
  249.          end;
  250.          ExcelApp.Visible := True;
  251.       end;
  252. end;
  253.  
  254. procedure TForm7.MenuItem2Click(Sender: TObject);
  255. begin
  256.   Form7.Hide;
  257.   Form2.Show;
  258. end;
  259.  
  260. procedure TForm7.MenuItem3Click(Sender: TObject);
  261. begin
  262.   Form7.Hide;
  263.   Form3.Show;
  264. end;
  265.  
  266. procedure TForm7.MenuItem4Click(Sender: TObject);
  267. begin
  268.   Form7.Hide;
  269.   Form4.Show;
  270. end;
  271.  
  272. procedure TForm7.MenuItem6Click(Sender: TObject);
  273. begin
  274.   Form7.Hide;
  275.   Form6.Show;
  276. end;
  277.  
  278. procedure TForm7.RadioGroup1Click(Sender: TObject);
  279. begin
  280.   Button4.Enabled:=True;
  281. end;
  282.  
  283. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement