1.运行生成的EXE文件后,再打开DPR工程文件想运行一下程序的时候就会出现以下错误提示
[Fatal Error] Could not create output file 'D:\程序\delphi\人事工资管理信息系统\ENTERPRISE.exe'2.我做了一个连数据库的程序,其中一项功能就是向表里插入新记录。其中包括图片的写入(IMAGE)字段。当运行程序想要写入一条记录时 虽然能成功的写入,但是之前总是提示一个错误对话框:“将截断字符串或二进制数据”,请问怎么办?以下是插入语句(我是新手跟着课本写的)
-------------------------------
 modsql:='update base_data set worker_name='''+edit2.Text+''',archives_id='''+edit3.Text+''','
+'sex='''+sex+''',school_age='''+edit10.Text+''',native_place='''+edit11.Text+''','
+'graduate_sch='''+edit5.Text+''',address='''+edit12.Text+''',politic_status='''+edit6.Text+''','
+'major='''+edit13.Text+''',link_phone='''+edit7.Text+''',department_name='''+edit14.Text+''','
+'re='''+memo1.Text+''',birthday='''+datetostr(datetimepicker1.Date)+''','
+'work_time='''+datetostr(datetimepicker2.Date)+''',come_time='''+datetostr(datetimepicker3.Date)+''' '
+' where worker_id='''+edit1.Text+'''';
------------------------------------------------------
3。顺便想问一下。我这是添加一条记录,可为什么书上的SQL句子(以上)不用INSERT INTO 而用UPDATE呢??=======================在下十分感谢诸位帮忙!

解决方案 »

  1.   

    1、你的EXE尚在运行中。关闭就可以了。(一般是这样,特殊情况就不知道了)2、你插入的数据长度超过了你数据库中定义的相应字段的长度3、那就是不可能的事情啦。哈哈哈哈哈
      

  2.   

    什么叫不可能的事情?能解释清楚吗??问题是他就是这么用的啊,而且也插入成功了啊!还有EXE尚在运行中,我没看见运行拧~``
      

  3.   

    'D:\程序\delphi\人事工资管理信息系统\ENTERPRISE.exe'
    看看这个文件是不是选中了“只读”属性!如果选中了,就取消选中
    你说的UPDATE可插入记录,这个的确无法理解,能否贴出代码?
      

  4.   

    'update base_data set worker_name='''+edit2.Text+''',archives_id='''+edit3.Text+''','
    +'sex='''+sex+''',school_age='''+edit10.Text+''',native_place='''+edit11.Text+''','
    +'graduate_sch='''+edit5.Text+''',address='''+edit12.Text+''',politic_status='''+edit6.Text+''','
    +'major='''+edit13.Text+''',link_phone='''+edit7.Text+''',department_name='''+edit14.Text+''','
    +'re='''+memo1.Text+''',birthday='''+datetostr(datetimepicker1.Date)+''','
    +'work_time='''+datetostr(datetimepicker2.Date)+''',come_time='''+datetostr(datetimepicker3.Date)+''' '
    +' where worker_id='''+edit1.Text+''''
      

  5.   

    //这是全部的!
    unit baseinputUnit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, ExtDlgs, ComCtrls, DB, ADODB,basedata_unit;type
      Tbaseinputfrm = class(TForm)
        worker_idlb: TLabel;
        worker_namelb: TLabel;
        archives_idlb: TLabel;
        sex_lb: TLabel;
        birthday_lb: TLabel;
        native_placelb: TLabel;
        school_agelb: TLabel;
        graduate_schlb: TLabel;
        politics_ststuslb: TLabel;
        work_timelb: TLabel;
        come_timelb: TLabel;
        address_lb: TLabel;
        link_phonelb: TLabel;
        department_lb: TLabel;
        major_lb: TLabel;
        re_lb: TLabel;
        Label18: TLabel;
        Bevel1: TBevel;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit5: TEdit;
        Edit7: TEdit;
        Edit11: TEdit;
        Edit12: TEdit;
        Edit13: TEdit;
        Edit14: TEdit;
        Memo1: TMemo;
        Input_Ok: TButton;
        cancel_btn: TButton;
        pic_btn: TButton;
        OpenPictureDialog1: TOpenPictureDialog;
        Label16: TLabel;
        Panel1: TPanel;
        Image1: TImage;
        DateTimePicker1: TDateTimePicker;
        DateTimePicker2: TDateTimePicker;
        DateTimePicker3: TDateTimePicker;
        edit6: TComboBox;
        sexchk1: TRadioButton;
        sexchk2: TRadioButton;
        Label1: TLabel;
        Edit10: TComboBox;
        procedure cancel_btnClick(Sender: TObject);
        procedure pic_btnClick(Sender: TObject);
        procedure Input_OkClick(Sender: TObject);
        procedure FormActivate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
       basedata:Tbasedata;
        { Private declarations }
      public
        { Public declarations }
      end;var
      baseinputfrm: Tbaseinputfrm;implementationuses persondatamod_unit, basefindUnit1;{$R *.dfm}procedure Tbaseinputfrm.cancel_btnClick(Sender: TObject);
    begin
    //image1.Picture.Free ;
    baseinputfrm.Close;
    end;procedure Tbaseinputfrm.pic_btnClick(Sender: TObject);
    begin
    if openpicturedialog1.Execute  then
    begin
    //在image中显示选中的图片
    image1.Picture.LoadFromFile(openpicturedialog1.FileName);
    end;
    end;procedure Tbaseinputfrm.Input_OkClick(Sender: TObject);
    var
      modsql,path1,sex:string;
    begin
    //判断是否选择照片
    if  openpicturedialog1.FileName='' then
    begin
    showmessage('请选择照片!');
    exit;
    end;
    //判断员工编号是否已经存在
    if basedata.CheckRec(edit1.Text)=true then
    begin
    showmessage('该员工编号已经存在,插入失败!');
    exit;
    end;
    //获取选中照片的路径
    path1:=openpicturedialog1.FileName;
    //调用类中方法先插入员工编号和照片内容
    basedata.WorkId1(edit1.Text,path1);
    //判断选择的性别
    if sexchk1.Checked  then   sex:='男';
    if sexchk2.Checked  then   sex:='女';
    //赋值SQL语句更改插入记录的其它内容
    modsql:='update base_data set worker_name='''+edit2.Text+''',archives_id='''+edit3.Text+''','
    +'sex='''+sex+''',school_age='''+edit10.Text+''',native_place='''+edit11.Text+''','
    +'graduate_sch='''+edit5.Text+''',address='''+edit12.Text+''',politic_status='''+edit6.Text+''','
    +'major='''+edit13.Text+''',link_phone='''+edit7.Text+''',department_name='''+edit14.Text+''','
    +'re='''+memo1.Text+''',birthday='''+datetostr(datetimepicker1.Date)+''','
    +'work_time='''+datetostr(datetimepicker2.Date)+''',come_time='''+datetostr(datetimepicker3.Date)+''' '
    +' where worker_id='''+edit1.Text+'''';
    basedata.RecUpdate(modsql);
    application.MessageBox('新建成功!','提示:',mb_ok);
    //插入新员工信息后触发显示界面的OnActivate事件刷新显示
    basefindfrm.FormActivate(Sender);
    end;
    procedure Tbaseinputfrm.FormActivate(Sender: TObject);
    begin
    //实例化类
    basedata:=Tbasedata.create ;
    end;procedure Tbaseinputfrm.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
      //释放实例
      basedata.Free;
    end;end.
    //------------------------------------------------------//====这是 BASEDATA类的RECUPDATE过程
    procedure Tbasedata.RecUpdate(UpdateSQL:string);
    begin
      Datamod.Person_adoq2.Close ;
      Datamod.Person_adoq2.SQL.Clear;
      Datamod.Person_adoq2.SQL.Add(UpdateSQL);
      Datamod.Person_adoq2.ExecSQL;
    end;
      

  6.   

    哦。感谢老冯跟歐陽藍缺   是我自己看露了。之前已经插入 worker_id 了!
    抱歉 哈哈!
    谢谢你们