如何将TEdit组件上显示的数字赋值给一个变量

解决方案 »

  1.   

    补充一下组件上显示的是数字 但变量的类型是int型
      

  2.   

    运行后报错说Edit1 is not a valid integer value
      

  3.   

    a:= strtoint(trim(edit1.text));把你的edit里的东东写出来看看
      

  4.   

    整数就a:= StrToInt(trim(edit1.text)); 
    小数就a:= StrToFloat(trim(edit1.text)); 
      

  5.   

    我初始给edit赋值为70(字符型)
    我想让a完成算数操作例如:logindate*a/100
    但 报错说 value assigned “a”never used
      

  6.   

    运行后报错说Edit1 is not a valid integer value
    这个问题可能是我没设edit的初始值
    已经解决了
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a: integer;
    begin
      if trim(Edit1.Text)='' then a:=0
      else begin
        try
          a := strtoint(edit1.Text);
        except
          messagebox(handle,'edit1中非数字','提示',mb_iconerror);
        end;
      end;
    end;
    你有代码没有,贴出来大家看看
      

  8.   

    procedure TMainForm.BitBtn1Click(Sender: TObject); 
    begin
      var 
        a: integer;
      with ADOQuery1 do 
      begin
          if trim(Edit1.Text)='' then a:=0 
           else begin 
            try 
            a := strtoint(edit1.Text); 
           except 
            messagebox(handle,'edit1中非数字','提示',mb_iconerror); 
           end; 
          end; 
          Close; 
          SQL.Clear; 
          SQL.Add('select id as 学号,userid as 学生姓名,username as 课程代号,'); 
          SQL.Add('logindate as 卷面成绩,logintime as 平时成绩,quittime as 实验参加次数,'); //这几行是想在TDBGrid显示输出
          SQL.Add('rights as 总实验次数,logindate(a/100)+logintime(100-a) as 综合成绩 from userlogin');//关键是想在这一行进行操作 
          Open; 
      end; 
    end;
      

  9.   

          SQL.Add('rights as 总实验次数,logindate(a/100)+logintime(100-a) as 综合成绩 from userlogin');//关键是想在这一行进行操作这句不对呀,改成这样
          SQL.Add('rights as 总实验次数,logindate('+inttostr(a)+'/100)+logintime(100-'+inttostr(a)+') as 综合成绩 from userlogin');//关键是想在这一行进行操作
      

  10.   

    把SQL语句截出来,分析一下看看哪写的不对
      

  11.   

    select id as 学号,userid as 学生姓名,username as 课程代号,
    logindate as 卷面成绩,logintime as 平时成绩,quittime as 实验参加次数,
    rights as 总实验次数,logindate(23/100)+logintime(100-23) as 综合成绩 from userlogin最终执行结果是这个吗,你放在数据库中执行一下看看
      

  12.   

    我把自己的源码全发出来了 帮我看看 谢谢 后面Excel表的导入也还有问题 能帮我看看unit Main;interface uses 
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
      Dialogs, DB, DBTables, Menus, StdCtrls, Buttons, Grids, DBGrids, ADODB, 
      ExcelXP, OleServer,comobj;type 
      TMainForm = class(TForm) 
        DBGrid1: TDBGrid; 
        ADOConnection1: TADOConnection; 
        ADOQuery1: TADOQuery; 
        DataSource1: TDataSource; 
        BitBtn2: TBitBtn; 
        BitBtn4: TBitBtn; 
        Label3: TLabel; 
        BitBtn6: TBitBtn; 
        BitBtn5: TBitBtn; 
        BitBtn1: TBitBtn; 
        BitBtn3: TBitBtn;
        BitBtn7: TBitBtn;
        ExcelApplication1: TExcelApplication;
        ExcelWorksheet1: TExcelWorksheet;
        ExcelWorkbook1: TExcelWorkbook;
        SaveDialog1: TSaveDialog;
        BitBtn8: TBitBtn;
        OpenDialog1: TOpenDialog;
        procedure BitBtn3Click(Sender: TObject); 
        procedure BitBtn2Click(Sender: TObject); 
        procedure BitBtn6Click(Sender: TObject); 
        procedure BitBtn4Click(Sender: TObject); 
        procedure BitBtn1Click(Sender: TObject); 
        procedure BitBtn5Click(Sender: TObject);
        procedure BitBtn7Click(Sender: TObject);
        procedure BitBtn8Click(Sender: TObject);
      private 
        { Private declarations } 
      public 
        { Public declarations } 
      end; var 
      MainForm: TMainForm; implementation {$R *.dfm} //刷新数据 
    procedure TMainForm.BitBtn1Click(Sender: TObject); 
    begin 
      var
        a: integer; 
      with ADOQuery1 do 
      begin 
          if trim(Edit1.Text)='' then a:=0
          else begin 
            try 
            a := strtoint(edit1.Text); 
          except 
            messagebox(handle,'edit1中非数字','提示',mb_iconerror); 
          end; 
          end; 
          Close; 
          SQL.Clear; 
          SQL.Add('select id as 学号,userid as 学生姓名,username as 课程代号,'); 
          SQL.Add('logindate as 卷面成绩,logintime as 平时成绩,quittime as 实验参加次数,'); //这几行是想在TDBGrid显示输出 
          SQL.Add('rights as 总实验次数,logindate('+inttostr(a)+'/100)+logintime(100-'+inttostr(a)+') as 综合成绩 from userlogin');//关键是想在这一行进行操作
          Open; 
      end; 
    end;

    //连接后台数据库
    procedure TMainForm.BitBtn2Click(Sender: TObject);
    begin 
      MainForm.ADOConnection1.Connected:=True;//连接后台数据库 
      if  MainForm.ADOConnection1.Connected=False then //如果连接失败 
      begin 
          MessageDlg('系统连接后台数据库失败。请'+#13+#10+ 
                    ''+#13+#10+'检查数据库网络配置是否完好!', 
                    mtWarning,[mbYes],0); 
          Application.Terminate;//应用程序退出 
      end 
      else 
      begin 
          MessageDlg('系统已成功连接后台数据库!',mtInformation,[mbYes],0); 
      end; 
      BitBtn2.Enabled:=False;//设置组件的使能状态 
      BitBtn3.Enabled:=True; 
    end; //断开数据库连接 
    procedure TMainForm.BitBtn3Click(Sender: TObject); 
    begin 
      ADOConnection1.Connected:=False;
      BitBtn2.Enabled:=True;
      BitBtn3.Enabled:=False; 
    end; //连接数据库时显示登陆提示 
    procedure TMainForm.BitBtn4Click(Sender: TObject); 
    begin 
      ADOConnection1.LoginPrompt:=True; 
      BitBtn4.Enabled:=False; 
      BitBtn5.Enabled:=True; 
    end;//连接数据库时不显示登陆提示 
    procedure TMainForm.BitBtn5Click(Sender: TObject); 
    begin 
      ADOConnection1.LoginPrompt:=False; 
      BitBtn4.Enabled:=True; 
      BitBtn5.Enabled:=False; 
    end; //退出 
    procedure TMainForm.BitBtn6Click(Sender: TObject); 
    begin 
      Close; 
    end;
    procedure TMainForm.BitBtn7Click(Sender: TObject);
    var
       ExcelApplication1:TExcelApplication;
       ExcelWorksheet1:TExcelWorksheet;
       ExcelWorkbook1:TExcelWorkbook;
       i,j:integer;
       filename:string;
     begin
          filename:='成绩表';
       try
        ExcelApplication1:=TExcelApplication.Create(Application);
        ExcelWorksheet1:=TExcelWorksheet.Create(Application);   
        ExcelWorkbook1:=TExcelWorkbook.Create(Application);
        ExcelApplication1.Connect;
       except
        Application.Messagebox('Excel没有安装!','Hello',MB_ICONERROR+mb_Ok);
        Abort;
       end;
       try
        ExcelApplication1.Workbooks.Add(EmptyParam,0);
        ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
        ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1]as _worksheet);
        dbgrid1.DataSource.DataSet.First;
        for j:=0 to dbgrid1.DataSource.DataSet.Fields.Count-1 do
         begin
          ExcelWorksheet1.Cells.item[3,j+1]:=dbgrid1.Columns[j].Title.Caption;//导出dbgrid中显示的字段标题
          //ExcelWorksheet1.Cells.item[3,j+1]:=dbgrid1.DataSource.DataSet.Fields[j].DisplayLabel;//导出数据库中字段名
          ExcelWorksheet1.Cells.item[3,j+1].font.size:='10';
         end;
           for i:=4 to dbgrid1.DataSource.DataSet.RecordCount + 3 do  //从excel的第4行到最后
            begin 
             for j:= 0 to dbgrid1.DataSource.DataSet.Fields.Count-1  do  //从dbgrid1的第1列到最后
              begin
               ExcelWorksheet1.Cells.item[i,j+1]:=dbgrid1.DataSource.DataSet.Fields[j].Asstring;
               ExcelWorksheet1.Cells.item[i,j+1].font.size:='10';
              end;
              dbgrid1.DataSource.DataSet.Next;
             end;
              ExcelWorksheet1.Columns.AutoFit;
              ExcelWorksheet1.Cells.item[1,2]:='成绩表'+Formatdatetime('YYYYmmdd',Now);
               ExcelWorksheet1.Cells.Item[1,2].font.size:='14';
              savedialog1.FileName:='成绩表'+Formatdatetime('YYYYmmdd',Now);
              savedialog1.InitialDir:=ExtractFilePath(Application.ExeName);
              saveDialog1.Filter:='*.xls';
              if SaveDialog1.Execute then
              begin
                ExcelWorksheet1.SaveAs(SaveDialog1.FileName);
                Application.Messagebox(pchar(filename+'数据成功导出'),'Hello',mb_Ok);
              end
              else
          finally
        ExcelApplication1.Disconnect;
        ExcelApplication1.Quit;
        ExcelApplication1.Free;
        ExcelWorksheet1.Free;
        ExcelWorkbook1.Free;
      end;
    end;
    procedure TMainForm.BitBtn8Click(Sender: TObject);
    var a,b : string;
        ExcelApp,WorkBook:Variant;     
        ExcelRowCount:integer;
        i:integer;
    begin
       ExcelApp:= CreateOleObject('Excel.Application');  //創建Excel程序
       opendialog1.Execute;  //打開對話框
       WorkBook := ExcelApp.WorkBooks.Open(opendialog1.FileName);
       ExcelApp.Visible := false;
       ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count; //獲取Excel的行數
        for i:=1 to ExcelRowCount+1 do
         begin
          a:=excelapp.Cells.Value;  //第一列的值
          b:=excelapp.Cells.Value; //第二列的值
          if (excelapp.Cells.Value='')and(excelapp.Cells.Value='') then //第一列與第二列值都為空 則中止
          break
         else
          begin
            with adoquery1 do
            begin
            close;
            sql.Clear;
            sql.Add('insert into xxx(a,b) values(:A,:B)');   //往表中插入Excel的內容
            parameters.ParamByName('A').Value:=a;
            parameters.ParamByName('B').Value:=b;
            Execsql;
            end;
          end;
        end;
        WorkBook.Close;//关闭工作簿
        ExcelApp.Quit; //退出Excel
        ExcelApp:=Unassigned;//釋放變量
        WorkBook:= Unassigned;
           with adoquery1 do   //把結果顯示出來
        begin
        close;
        sql.Clear;
        sql.Add('select * from reny0830');
        open;
        end;
    end;
    end.
      

  13.   

    设断点跟踪吧,对于Excel导入导出,网上有好多例子,可以google,baidu一下
      

  14.   

    Excel导入和导出在编译时看不到错误
    程序执行完后 点击导入Excel表时 说什么存储空间不主