我碰到一个这样的问题了,有两个窗体Tw_gxck,有memo1.
Tw_jsgs,窗体有ADOQUERY,DATASOURCE,
我想在实现的功能是想通过Tw_gxck的点击一个按钮从memo1.的文本值输入在窗体
w_jsgs的adoquery1中并在通过DBGID1中显示出来,我写了一端简单的代码,请帮我看一下了;谢谢!procedure Tw_gxck.Button1Click(Sender: TObject);
begin
w_jsgs.ADOQuery1.Close;
w_jsgs.adoquery1.SQL.Clear;
w_jsgs.ADOQuery1.SQL.Add('insert into jsgx(xmmc)values(memo1.text)');
w_jsgs.ADOQuery1.Open;
w_gxck.Free ;
end;
end.

解决方案 »

  1.   

    上面的出现了报错的问题了,就是说“在上下文本中不允许用TEXT文本,至此只能用常量。变量,和表达”,
      

  2.   

    w_jsgs.ADOQuery1.Close;
    w_jsgs.adoquery1.SQL.Text := 
      Format('insert into jsgx(xmmc)values(%s)', [QuotedStr(Memo1.Text)]);
    w_jsgs.ADOQuery1.ExecSQL; //除select语句外,都要用ExecSQL来执行~~
      

  3.   

    : zswangII(伴水清清)(一贴不灌,何以灌天下
    上面有报错了无法插入空值,操作失败!
      

  4.   

    w_jsgs.ADOQuery1.SQL.Add('insert into jsgx(xmmc)values('''+memo1.text+''')');
      

  5.   

    那就是有些字段不能为空呗~~
    'insert into jsgx(id,xmmc)values('001',%s)
      

  6.   

    : zswangII(伴水清清)(一贴不灌,何以灌天下
    我的功能是想实现一个表的一个字段(xmmc)插入;
    我应该怎样才能实现了,
      

  7.   

    在建表時、若定義項目為Primary或Not NULL、挿入時、必須給它付值。
    查一下你的表定義...
      

  8.   

    在SQL建表jsgx(jsgx,xmmc,de,gs)在w_jsgs输入,在w_gxck中通过memo1输入插入到w_jsgs中并在dbgrid1中显示
    是的,我在表里面已经查了,有Primary或Not NULL,但是我在w_jsgs里面了输入几个字段的值,我想在实现的功能是想通过Tw_gxck的点击一个按钮从memo1.的文本值输入在窗体w_jsgs的adoquery1中并在通过DBGID1中显示出来,我写了一端简单的代码,请帮我看一下了;谢谢!
    procedure Tw_gxck.Button1Click(Sender: TObject);
    begin
    w_jsgs.ADOQuery1.Close;
    w_jsgs.adoquery1.SQL.Text:=Format('insert into jsgx(gs)values(%s)',[QuotedStr(Memo1.Text)]);
    w_jsgs.ADOQuery1.ExecSQL;
    w_gxck.Free;
    end;
    end.
      

  9.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DataModule1.ADOConnection1.Connected := true;
      DataModule1.ADOQuery1.Connection := DataModule1.ADOConnection1;  with DataModule1.ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('insert into jsgx(jsgx,xmmc,de,gs) '); //SQL文
        SQL.Add(' values(:jsgx_var,:xmmc_var,:de_var,:gs_var)');    Parameters.Clear;
        Parameters.AddParameter.Name := 'jsgx_var';      //参数定義
        Parameters.AddParameter.Name := 'xmmc_var';
        Parameters.AddParameter.Name := 'de_var';
        Parameters.AddParameter.Name := 'gs_var';    Parameters.ParamByName('jsgx_var').Value := Memo1.Lines.Strings[0]; //参数付値
        Parameters.ParamByName('xmmc_var').Value := Memo1.Lines.Strings[1];
        Parameters.ParamByName('de_var').Value := Memo1.Lines.Strings[2];
        Parameters.ParamByName('gs_var').Value := Memo1.Lines.Strings[3];    ExecSQL; //執行
      end;
    end;(注:在memo1毎一行輸入一個項目値)
      

  10.   

    DataModule1.ADOQuery1.Connection := DataModule1.ADOConnection1;
    [Error] f_gxck.pasd(182): Undeclared identifier: 'Connection'还有对了一个字段(gs)是通过一个窗体memeo1输入插入,而不是全部插入,
    ,而其它字段是通过另一个窗体输入,
      

  11.   

    'insert into jsgx(xmmc)values('''+memo1.text+''')'
      

  12.   

    ①手動設定:
     在ADOQuery1的属性中的Connection選定ADOConnection1
      去除”DataModule1.ADOQuery1.Connection := DataModule1.ADOConnection1;”②二個窗体的内容可以集中在一起輸入。
    在Tw_jsgs的Source中:
    var
      w_gxck: Tw_gxck;  //引用Tw_gxck窗体(或按Alt+F11加入)implementation{$R *.dfm}③修正
     Parameters.ParamByName('gs_var').Value := w_gxck.form1.Memo1.Lines.Strings[3];
                                ?
      

  13.   

    我已经试过了,可是所有的字段一起插入了是,不会报错,能插入成功!但是我关键是想插入一个字段而已,别的字段我自己输入,不需要写程序插入,
    begin
     Data1.ADO_user.Connected := true;
      ADOQuery1.Connection := data1.ADO_user;
       with  ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('insert into jsgx(gs) '); //SQL文
        SQL.Add(' values(:gs_var)');
        Parameters.Clear;
        Parameters.AddParameter.Name := 'gs_var';
        Parameters.ParamByName('gs_var').Value := Memo1.Lines.Strings[0]; //参数付値
       ExecSQL; //執行
    end;
    end;
    就报错了,是不能插入NULL值:
      

  14.   

    "别的字段我自己输入,不需要写程序插入"
    那要先插入、然後再用'Update文'、不是用'Insert文'!update jsgx
       set gs = :gs_var
    where 条件(還有:君真可愛、看看databases書!)
      

  15.   


    procedure Tw_gxck.DBGrid1CellClick(Column: TColumn);
    begin
    if adoquery1.RecordCount >0 then
        begin
    Memo1.Lines.Strings[3];=trim(adoquery1.fieldbyname('bsf').asstring);
       end;
    end;
    可是在MEMO1中不能显示值:是什么愿意了,
    2)。我想问一下换行是有哪个属性了,
      

  16.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with DataModule1.ADOQuery1 do begin
        Open;
        while not EOF do begin
          memo1.Lines.Add(fieldbyname('bsf').asstring);
          next;
        end;
        Close;
      end;
    end;②誰的换行?
      

  17.   

    谢谢!
    上面的功能我都能实现了,
    不过我还想问一个简单的问题了,
      我现在想实现一个这样的功能了!就是我有一个窗体adoquery1.adoconnect.datasoruce,dbgrid1和2个buttionw为一个增加,和一个保存:
    连接数据库一个,我想点击增加输入值.保存是能成功!但是我没有点点击增加,直接点击
    保存就报错:我也想直接点击保存的话就想没有什么发生了,请帮我解决了,高手!!
    我的简单的代码是
    procedure Tw_jsgs.tb_addClick(Sender: TObject);
    begin
     adoquery1.Append ;
    end ;
    procedure Tw_jsgs.tb_addClick(Sender: TObject);
    begin
     adoquery1.post;
    end ;
      

  18.   

    "adoquery1.Append"後、若執行"First"或"Next"等都会黙認的執行了"Post"。
    "adoquery1.post"一般不会人為的控製、增加和保存看做一個動作。