DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: a332452295
今日帖子: 0
在线用户: 0
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 zwn (zwn) ★☆☆☆☆ -
盒子活跃会员
2003/11/5 21:56:41
标题:
这种构思的代码看似容易实现,确实恼火,谁能帮我? 浏览:2193
加入我的收藏
楼主: DELPHI6编程:
ACCESS库表1  商品编号 商品名称 生产厂家
        表2  商品编号a 商品名称a 生产厂家a 商品编号b 商品名称b 生产厂家b
现在将表2商品编号a 商品编号b 记入表1的商品编号;表2的商品名称a 商品名称b记入表2的商品名........
有两位朋友提出过循环  for.. to.. do,  while ...do等,现在假设表1是一条记录也没有,表2有多条记录 如表2中有一条记录,插入表1的就有2条记录,要边循环表2边向表1中插入记录。一直到将表2中的记录全部插入到表1  我调试过两位朋友的代码,不论怎样只能将表2中的第一条记录插入到表1中(也就是表1中有两条记录),无法实现我这个构思(当表2循环到第一条记录时向表插入两条记录,当表2循环到第二条记录时,又向表插入两条记录,以此类推。
有谁能实现并调试通过这种构思的代码,谢谢!
----------------------------------------------
感谢给我帮助的朋友们!希望能够遇见你!祝福您一生平安!
作者:
男 windows.net (windows.net) ★☆☆☆☆ -
盒子活跃会员
2003/11/6 0:27:42
1楼: 主要是要解决怎样把表2中的记录拆成2个记录然后插入表1就可以了
----------------------------------------------
| | 凡事无绝对 | | 不须太强求 | |
作者:
男 windows.net (windows.net) ★☆☆☆☆ -
盒子活跃会员
2003/11/6 1:14:21
2楼: a 为商品编号a的变量,b为商品编号b,c为商品名称a,d为商品名称b 
 放两个adoquery控件 
在botton的click中输入
var
  sqlconn,sqlstr:string;
  a,b,c,d:string (根据字段的属性设置相应的类型)  
  I:integer;
begin
sqlconn:='连接数据库'
sqlstr:='select 商品编号a,商品编号b,商品名称a,商品名称b from 表2';
with adoquery1 do 
     begin
     close;
     ConnectionString:=sqlconn;
     sql.clear;
     sql.add(sqlstr3);
     open;
     end;
    
  
 if  not adoquery1.eof then
  adoquery1.first;
   for i:=0 to adoquery1.recordcount do
     begin
         a:=ADOQuery1.FieldValues['商品编号a'];
         b:=ADOQuery1.FieldValues['商品编号b'];
         c:=ADOQuery1.FieldValues['商品名称a'];
         d:=ADOQuery1.FieldValues['商品名称b'];
         adoquery2.connectionstring:=sqlconn;
                 adoquery2.close;
                 adoquery2.sql.text:='select * from 表1';
                 adoquery2.open;
                 adoquery2.append;
                 adoquery2.fieldbyname('商品名称').AsString:=c;
                 adoquery2.fieldbyname('商品编号').AsString:=a;
                 adoquery2.post;
                 adoquery2.last;
                 adoquery2.append;
                 adoquery2.fieldbyname('商品名称').AsString:=d;
                 adoquery2.fieldbyname('商品编号').AsString:=b;
                 adoquery2.post;
                 adoquery2.last;
                 adoquery2.close;
           adoquery1.next;
         end;
         
       end;

试试吧,不知道可不可以,我没有在delphi中试,有问题在联系

----------------------------------------------
| | 凡事无绝对 | | 不须太强求 | |
作者:
男 zwn (zwn) ★☆☆☆☆ -
盒子活跃会员
2003/11/6 8:19:27
3楼: 感谢2楼我最亲爱的朋友,无论你是男、是女、是老、是少,我都应该感谢你,有机会找个摄像头试试。我的QICQ:9369988,如果你有QQ希望加我哟!
下面我把你给我的代码,我稍修改调试出来奉献给你及广大的网友,少走些弯路:

我用的是ADOCONNECTION控件连接数据库,所以你前段代码,我就没用。

adoquery2 是代表我的表1
adoquery3 是代表我的表2
 
procedure TForm1.Button3Click(Sender: TObject);
var
   a,b,c,d:string;
   i:integer;
begin
  if not adoquery3.Eof then
    adoquery3.First;
  for i:=0 to adoquery3.RecordCount-1 do   //因ACCESS库有一条空记录,必须
                                            是记录总数-1 
  begin
    a:=adoquery3.FieldValues['商品编号a'];
    b:=adoquery3.FieldValues['商品编号b'];
    c:=adoquery3.FieldValues['商品名称a'];
    d:=adoquery3.FieldValues['商品名称b'];
    adoquery2.Append;
    adoquery2.FieldByName('商品名称').AsString:=c;
    adoquery2.FieldByName('商品编号').AsString:=a;
    adoquery2.Post;


    adoquery2.Append;
    adoquery2.FieldByName('商品名称').AsString:=d;
    adoquery2.FieldByName('商品编号').AsString:=b;
    adoquery2.Post;
  adoquery3.Next;
    end;
  end;

----------------------------------------------
感谢给我帮助的朋友们!希望能够遇见你!祝福您一生平安!
作者:
男 windows.net (windows.net) ★☆☆☆☆ -
盒子活跃会员
2003/11/6 9:07:54
4楼: 相互帮助而已,昨天晚上睡不着,看了你的帖子就随便写了几句!呵呵,能够解决问题就好!
----------------------------------------------
| | 凡事无绝对 | | 不须太强求 | |
作者:
男 xingkongcanlan (星空) ★☆☆☆☆ -
普通会员
2003/11/6 9:28:00
5楼: 我喜欢!!!!!
----------------------------------------------
发白才知智叟呆,埋头苦干向未来;\r\n勤能补挫是良剂,一份辛苦一份才.
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行63.96484毫秒 RSS