主从表:new1为主表的TTable,new2为从表的TTable
两个表里面都有fp_no和fp_no10的字段,设为联合主键,定义为varchar2(8)和varchar(10),在ORACLE9i数据库下面
然后,delphi里面有变量fp_no和fp_no10,为string;有以下的语句:
fp_no:='00112233';
fp_no10:='1234567890';
new1.append;
new1.fieldbyname('fp_no').asstring:=fp_no;
new1.fieldbyname('fp_no10').asstring:=fp_no10;
new1.post;new2.append;
new2.fieldbyname('fp_no').asstring:=fp_no;
new2.fieldbyname('fp_no10').asstring:=fp_no10;
new2.post;   //此处出错!!!!!new1表post成功
但post new2表时候抱错
我查出是因为post new2表的时候,fp_no='00112233'成功的付给new2.fieldbyname('fp_no').asstring,但是post后,写入数据库里面的字符自动将前面的0去掉了,变成了'112233',这样就找不到主表里面的主键,就会报错!!!为什么我付值的时候是对的,但post的时候会将前面的0(有几个去几个)去掉呢?
所有的东西都是字符型的,而不是整型的.请高手指点!!帮我up的人也有分!!:)

解决方案 »

  1.   

    what is wrong with it ?
      

  2.   

    可能是Delphi控件的事,我用DBEdit取出的字符串“000001”都变成了“1”了。
    自己写SQL语句写数据库吧,我一直都是用SQL语句直接写,对控件知道的少,不敢用。
      

  3.   

    对,最好自己写SQL。DELPHI有时候会对字符串做一些不恰当的处理
      

  4.   

    用sql语句去完成他,我想比较好
    还有主从表的话,建议读出主表的关键字复制给从表,先保存从表后保存主表—————————————————————————————————
    笨鸟未飞
      

  5.   

    先post new2 
    再post new1
    看看
      

  6.   

    fp_no:='00112233';
    fp_no10:='1234567890';
    new1.append;
    new1.FieldValues['fp_no']  :=fp_no;
    new1.FieldValues['fp_no10']:=fp_no10;
    new1.post;new2.append;
    new2.FieldValues['fp_no']  :=fp_no;
    new2.FieldValues['fp_no10']:=fp_no10;
    new2.post;
    不行的話,換ADODataset試驗一下.