1.你应该还有个学生_科目表吧(除非所有的学生参加所有的考试),假设现在你有如下的表: 学生_科目S_j(sid,nam,jh),KInfor试室信息表(kdh,kdmc),还有你给出的表 你的问题是按照你的要求向KCBP.DBF中插入数据,对吗? 2.如果是这样的话,可以试试. Function Getkdh(I:integer;wantfield:string) :string Begin Query1.FieldByName(wantfield).AsString; If I mod 30 =0 then Query1.Next; End; 插入的过程如下: with Query1,Query1.Sql do begin Clear; Add('select * from Kinfor order by kdfh’); Open; end; with Query2,Query2.Sql do begin Clear; Add('insert into kcbp'); Add(' (select sid, nam, jh, ((count(sid)-1) mod 30)+1)), Getkdh(count(sid)/30,’kdh’), GetKdh(count(sid)/30,’kdmc’) form S_j group by jh )'); ExecSql; end; 3. 如果不是这样,请在解释解释你的意思,希望能帮的上忙.
1. 关于试室编排: 你觉得你是想往编排库kcbp.dbf(sid,name,jh,kdh,kdmc)中插入数据,对吗? 我想到一种方法,但是有点笨.呵呵 var sidnumber,i,j:integer; strkm: string
Function Getkdh(I:integer;wantfield:string) :string Begin result := QryKdh.FieldByName(wantfield).AsString; If I mod 30 =0 then Query1.Next; End; with Qrykdh,Qrykdh.Sql do begin Clear; Add(select * from kcjh order by jh); Open; end; with Query1,Query1.Sql do begin Clear; Add('select count(sid) as sidnum,kd from ksbmk group by kd'); Open; end; Query1.First; while not Query1.Eof then begin for i:=0 to Query1.recordcount-1 do begin sidnumber:=Query1.FieldByName('sidnum').AsInteger; strkm := Query1.FieldByName('kd').AsString; with Query3,Query3.Sql do begin Clear; Add('select basdata.sid as aa,name,kd from basdata,ksbmk where basdata.sid=ksbamk.sid and ksbmk='+strkm); Open; end; for j:=0 to sidnumber-1 do with Query2,Query2.Sql do begin Clear; Add(format('insert into kcbp values(%s,%s,%s,%s,%s)',[Query3.FieldByName('aa').AsString, Query3.FieldByName('name').AsStirng, Query3.FieldByName('kd').AsString,Getkdh(j,'kdh'),Getkdh(j,'kdmc')]); ExecSql; end; end; end2. 在初始化中如何接收考试的相关信息? 你有接收界面吗?你是想向Kc-jh.dbf里手动插入数据还是由此盘或文件导入?
to seesell(草原之子) 在您给我的解答上我有疑问,您可以给我您的E-Mail地址吗?方便请教哦!我的E-Mail:[email protected]请指教!
学生_科目S_j(sid,nam,jh),KInfor试室信息表(kdh,kdmc),还有你给出的表
你的问题是按照你的要求向KCBP.DBF中插入数据,对吗?
2.如果是这样的话,可以试试.
Function Getkdh(I:integer;wantfield:string) :string
Begin
Query1.FieldByName(wantfield).AsString;
If I mod 30 =0 then
Query1.Next;
End;
插入的过程如下:
with Query1,Query1.Sql do begin
Clear;
Add('select * from Kinfor order by kdfh’);
Open;
end; with Query2,Query2.Sql do begin
Clear;
Add('insert into kcbp');
Add(' (select sid, nam, jh, ((count(sid)-1) mod 30)+1)),
Getkdh(count(sid)/30,’kdh’), GetKdh(count(sid)/30,’kdmc’) form S_j group by jh )');
ExecSql;
end;
3. 如果不是这样,请在解释解释你的意思,希望能帮的上忙.
要程序实现以下功能:
1.初始化
处理:除学生基本情况外清空所有数据库、建立索引、接收Kc-jh.dbf(选择输入的路径,考试时间库:jh(科目代码)、day(考试日期,日期型)、zksj1(正考开始时间)、zksj2(正考结束时间)、bksj1(补考时间开始时间)、bksj2(补考结束时间))
2.学生基本情况
实体:学生
属性:学号(12位长字符串)、姓名、班号(10位长字符串)、班名称
处理:录入、磁盘转入(来自数据库/文本文件,选择输入的路径)、综合查询(包括某班的在册人数)、打印
3.科目情况
实体:科目
属性:科目代码(3位长字符串,由学生基本情况转入)、科目名称(28位长字符串)
处理:磁盘转入(来自数据库kmk.dbf/文本文件,选择输入的路径)、查询、增加
4.报考情况
实体:考生
属性:学号(12位长字符串,由学生基本情况转入)、科目代码(3位长字符串)
处理:录入、磁盘转入(选择输入的路径、注意避免重复)、修改、删除、综合查询(包括某科目的报考人数)、打印
5.试室情况
实体:试室
属性:试室编号(3位长字符串001-999)、试室名称(12位长字符串)、打印
处理:录入、修改、删除、查询、打印
6.编排考场情况
实体:考生
属性:学号(12位长字符串,由报考转入)、姓名(由学生基本情况转入)、座位号(01-30)、科目代码(3位长字符串,由报考情况转入)、试室编号(3位长字符串001-999)、试室名称(12位长字符串,由试室情况转入)
处理:试室编排(先按科目代码顺序,接着按试室编号顺序,以按学号顺序/随机两种方式编排试室,注:每试室只能安排30名考生)、综合查询、打印(按试室打印)
试室编排还未搞定呀!请看看我上面补充的完整问题。
实体1-6的库依序为:
学生基本库basdata.dbf(sid,nam,eid,class)//学号,姓名,班号,班名称
科目库kcjh.dbf(jh,kcm)//科目代码,科目名称
报考库ksbmk.dbf(sid,kd)//学号,科目代码
试室库kdqkk.dbf(kdh.kdmc)//试室编号,试室名称
编排库kcbp.dbf(sid,name,jh,kdh,kdmc)//学号,姓名,科目代码,试室编号,试室名称
注:编排库没有座位号字段,要在打印时按下面格式打印,但如果有座位号字段又如何处理?
格式:1 16
2 17
. .
. .
. .
. .
15 30
除了试室编排问题,还有一个问题想请您指教:在初始化中如何接收考试的相关信息?请不要见怪,我是第一次用delphi编写程序及数据库程序。
试室编排还未搞定呀!请看看我上面补充的完整问题。
实体1-6的库依序为:
学生基本库basdata.dbf(sid,nam,eid,class)//学号,姓名,班号,班名称
科目库kcjh.dbf(jh,kcm)//科目代码,科目名称
报考库ksbmk.dbf(sid,kd)//学号,科目代码
试室库kdqkk.dbf(kdh.kdmc)//试室编号,试室名称
编排库kcbp.dbf(sid,name,jh,kdh,kdmc)//学号,姓名,科目代码,试室编号,试室名称
注:编排库没有座位号字段,要在打印时按下面格式打印,但如果有座位号字段又如何处理?
格式:1 16
2 17
. .
. .
. .
. .
15 30
除了试室编排问题,还有一个问题想请您指教:在初始化中如何接收考试的相关信息?请不要见怪,我是第一次用delphi编写程序及数据库程序。
试室编排还未搞定呀!请看看我上面补充的完整问题。
实体1-6的库依序为:
学生基本库basdata.dbf(sid,nam,eid,class)//学号,姓名,班号,班名称
科目库kcjh.dbf(jh,kcm)//科目代码,科目名称
报考库ksbmk.dbf(sid,kd)//学号,科目代码
试室库kdqkk.dbf(kdh.kdmc)//试室编号,试室名称
编排库kcbp.dbf(sid,name,jh,kdh,kdmc)//学号,姓名,科目代码,试室编号,试室名称
注:编排库没有座位号字段,要在打印时按下面格式打印,但如果有座位号字段又如何处理?
格式:1 16
2 17
. .
. .
. .
. .
15 30
除了试室编排问题,还有一个问题想请您指教:在初始化中如何接收考试的相关信息?请不要见怪,我是第一次用delphi编写程序及数据库程序。
你觉得你是想往编排库kcbp.dbf(sid,name,jh,kdh,kdmc)中插入数据,对吗? 我想到一种方法,但是有点笨.呵呵
var
sidnumber,i,j:integer;
strkm: string
Function Getkdh(I:integer;wantfield:string) :string
Begin
result := QryKdh.FieldByName(wantfield).AsString;
If I mod 30 =0 then
Query1.Next;
End; with Qrykdh,Qrykdh.Sql do begin
Clear;
Add(select * from kcjh order by jh);
Open;
end; with Query1,Query1.Sql do begin
Clear;
Add('select count(sid) as sidnum,kd from ksbmk group by kd');
Open;
end;
Query1.First;
while not Query1.Eof then begin
for i:=0 to Query1.recordcount-1 do begin
sidnumber:=Query1.FieldByName('sidnum').AsInteger;
strkm := Query1.FieldByName('kd').AsString;
with Query3,Query3.Sql do begin
Clear;
Add('select basdata.sid as aa,name,kd from basdata,ksbmk where basdata.sid=ksbamk.sid and ksbmk='+strkm);
Open;
end; for j:=0 to sidnumber-1 do
with Query2,Query2.Sql do begin
Clear;
Add(format('insert into kcbp values(%s,%s,%s,%s,%s)',[Query3.FieldByName('aa').AsString, Query3.FieldByName('name').AsStirng, Query3.FieldByName('kd').AsString,Getkdh(j,'kdh'),Getkdh(j,'kdmc')]);
ExecSql;
end;
end;
end2. 在初始化中如何接收考试的相关信息?
你有接收界面吗?你是想向Kc-jh.dbf里手动插入数据还是由此盘或文件导入?