回 帖 发 新 帖 刷新版面

主题:困饶我几个星期的问题了

用Tedit 控件 通过SQL   向数据库一些列(数据类型是datetime 和 money 的 )

常常报错 : 一般都是字符串向money 或datetime类型转换时出错   因为各位高手 是怎么把edit1.text 里面的内容先转换成money 或datetime类型  在成功插入或修改数据库记录的呢??

回复列表 (共6个回复)

沙发

大家给点意见啊。。。。5555

板凳

是不是这样的  试试???
query1.fieldbyname('money').ascurrency:=strtofloat(edit1.text);
query1.fieldbyname('date').asdatetime:=strtodate(edit2.text);

3 楼

当EDIT中的内容转化成DATETIME或者是money 时,edit中的格式必须是一样的
如果是"2006-12-14"是可以转化的  但是"2006-12-14 "(中间有空格)就不可以了.
避免出错是可以与TRY   FINALLY END结构.

4 楼

:=strtodate(formatdatetime('yyyy-mm-dd',strtodate(edit2.text)));

5 楼

编译可以通过但是输入具体的数字跳出异常
strtodate  这个函数是不可识别的函数名。。。。。。郁闷了
用楼上那个formatdatetime('yyyy-mm-dd'。。。。。)  这样的 他会提示YYYY 这里出错

6 楼

procedure TForm1.Button1Click(Sender: TObject);
//Edit1录入日期
//Edit2录入数值
//AdoQuery1连接数据库
//Dateset1建立数据源
//DBGrid1显示数据
begin
  //插入数据
  with AdoQuery1 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('insert into Table1 (sj,mony) values (:a,:b)');
    parameters.ParamByName('a').Value:=strtodate(edit1.Text);
    parameters.ParamByName('b').value:=edit2.Text;
    execsql;
  end;
  //刷新并显示数据
  with AdoQuery1 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('select * from Table1');
    open;
  end;
end;

我来回复

您尚未登录,请登录后再回复。点此登录或注册