写短些
越看越糊涂 了
其实就那么几个命令
多使用sql就可以达到你的效果了
你写这么长,怪不地没有人回复你了

解决方案 »

  1.   

    可以在dbgride 的oncellclick事件处理
    如下
      if cdsmain.State in [dsedit,dsinsert] then begin
      if column.FieldName ='dmb' then begin
         if cdsmain.Locate('ypmd','001',[]) then begin
            cdsmain.FieldByName('dydj').AsString:=cdsmain.fieldbyname('mc').AsString
        else begin
           from1:=TFrom1.create(self);
           from1.show;
         end;
      end;
      end;
    再主form的destroy 事件释放变量from1.free;
      

  2.   

    定位,明白吗?
    locate
    并且不是输入到DBGRID中,而是输入EDIT中!不明白就写信吧
    [email protected]
      

  3.   

    请教朋友,朋友sjzmdslxj(求知) 提到的cdsmain是什么?
      

  4.   

    我简单的说一下,就是如何把FORM2中的DBGRID选择的数据在FORM1的DBGRID中显示出来?
      

  5.   

    with table1 do
    edit;
    form2.table1.fieldbyname('xx').asstring:=form1.table1.fieldbyname(xx);
    end;
      

  6.   

    如果还不能解决的话,发邮件给我吧!
    [email protected]
    不过记得加分  ^_^
      

  7.   

    form2.table1.fieldbyname('xx').asstring:=form1.table1.fieldbyname(xx);这个方法不错
      

  8.   

    对FORM1的DBGRID中的第一列(药品代码)进行选择,要求是当在第一列输入一个代码时,双击该项,如果该代码存在,则在DBGRID的其他列显示出其相应信息。如果该代码不存在,则调出FORM2增加需要的药品代码。这时该怎么办?
      

  9.   

    你是不是在模仿速达,确实比较方便,他在这里,我觉得比金碟要做得好,很方便,
    你可以写个存储过程向你操作的表里添加一条记录
    Create proc YourName
    @Id int
    as
    If exsit(Select * From YourTable2 Where Id=@id
    begin
    insert into YourTable1(col1,col2,……)
     value
    select col1,col2,…… From YourTabel2 Where Id=@id
    Return 0
    end在你的程序里根据存储过程的返回的状态参数判断他的执行请况
    如果为0 成功,
    否则打开你的新窗体,向YourTable2里添加新的记录,
    以上要写的代码该放在那里,Query,StoredProc 控件你会用吧
      

  10.   

    to  jackie168(杰姬)你的方法我试过多次,确实没有完全解决。
    我已经结了三个贴了,它们是:http://www.csdn.net/expert/topic/882/882351.xml?temp=.7370722
    http://www.csdn.net/expert/topic/882/882540.xml?temp=.8871271http://www.csdn.net/Expert/TopicView2.asp?id=882540&datebasetype=now
    如果确实解决了,肯定是会结的
      

  11.   

    to  pekiee(绿光) 先生:
    谢谢你的指导。
    我的后台数据库是VFP,VFP里如何建立存储过程?
    我的前段思路是这样的:
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    var
    s:variant;
      begin
     s:='';
    if dbgrid1.selectedfield.fieldname='药品代码' then
    begins:=DBGrid1.SelectedField.AsString; if table3.findkey([s]) then  (table3就是药品表1 )
     begin
     showmessage('find');
     end
    else 
    showmessage('no find')
     end;
     end;
    写的存储过程如下:
    Create proc chaxunyaopingproc
    @yaopingdaima char(30)
    as
    If exsit(Select 药品代码 From 药品表1 Where yaopingdaima =@yaopingdaima 
    begin
    insert into 进货表1(药品代码,药品名称,规格,生产厂家,有效日期)
     value
    select (药品代码,药品名称,规格,生产厂家,有效日期 From 药品表1 Where 药品代码=@yaopingdaima)
    Return 0
    end
    问题就是如何在VFP中把存储过程写好?在DELPHI如何调用它?
      

  12.   

    to pekiee(绿光) 先生:
    谢谢你的指导。
    我的后台数据库是VFP,我用VFP的EDIT STORE PROCEDUR框写如下存储过程:
    Create proc chaxunyaopingproc
    @yaopingdaima char(30)
    as
    If exsit(Select 药品代码 From 药品表1 Where yaopingdaima =@yaopingdaima 
    begin
    insert into 进货表1(,药品代码,药品名称,规格,生产厂家,有效日期)
     value
    select (药品代码,药品名称,规格,生产厂家,有效日期 From 药品表1 Where 药品代码=@yaopingdaima)
    Return 0
    end
    写了后如何存盘?
    我的前段思路是:
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
      begin
     edit1.clear;
    if dbgrid1.selectedfield.fieldname='药品代码' then
    begin
    edit1.clear;
    Edit1.text:=DBGrid1.SelectedField.AsString;
    s:=edit1.text;
    label1.caption:=s; if table3.findkey([s]) then (TABLE3是药品表1)
     begin
     edit1.clear;
     query1.close;
     query1.SQL.Clear;
     query1.add('')
     showmessage('find');
     end;
     end;
     end;
    在DELPHI中如何调用存储过程?
    谢谢!
    我表明我的诚意,我先把分结了吧!
      

  13.   

    我用的是SQL,对VFP 一点都不了解,在数据库方面我不能帮你,
    Delphi里用存储过程是用TStoredProc控件,指定它的属性
    先指定DataBaseName,再指定StoreProcName,就可以,注意他的参数。
    我说你大清楚,你慢慢试,VEP应该也是一样的;