📄 copy_zyjxjh.pas
字号:
unit copy_zyjxjh;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, ExtCtrls,zhxx, DB, DBTables;
type
TFrmzyjxjhhz = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
Q_deljxjhb: TQuery;
Q_rxnf_jxjh: TQuery;
Q_jxjhc: TQuery;
Q_okyy_nkyy: TQuery;
Label1: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label2: TLabel;
Table1: TTable;
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frmzyjxjhhz: TFrmzyjxjhhz;
v_rxnf,s_zym,s_rxnf,v_zym,v_zyh:string;
implementation
uses jxjh;
{$R *.dfm}
procedure TFrmzyjxjhhz.FormShow(Sender: TObject);
begin
table1.Close;
table1.Open;
combobox1.Items.Clear;
combobox2.Items.Clear;
while not table1.eof do
begin
combobox1.Items.Add(table1.fieldbyname('SYS_RXNF__RXNF').Value) ;
combobox2.Items.Add(table1.fieldbyname('SYS_RXNF__RXNF').Value);
table1.next;
end;
end;
procedure TFrmzyjxjhhz.Button2Click(Sender: TObject);
begin
close;
end;
procedure TFrmzyjxjhhz.Button1Click(Sender: TObject);
var
c_kyy,xnxqh,msg:string;
xf,kch,kclb,ksfs,kslb,jkzxs,syzxs,SYOXS,v_kyy,jkoxs,ZXS,ZXF:string;
begin
s_rxnf:=trim(combobox1.Text);
v_rxnf:=trim(combobox2.Text);
if (s_zym='') or (v_zym='') then
begin
showmessage('请选择源教学计划及要复制专业名称!');
exit;
end
else if ((s_zym=V_zym) and (s_rxnf=v_rxnf)) then
begin
showmessage('源专业和要复制专业的名称和入学年份不能完全一样!');
exit;
end;
Msg:=Format('是否要将%s专业原有的教学计划数据删除?', [s_zym]);
if MessageDlg(msg,mtCustom, [mbYes, mbNo],0) =mrYes then
begin
//一定要先删除从表记录,否则主表不存在,从表就无法删除
with q_jxjhc do
begin
close;
params[0].AsString :=v_rxnf;
params[1].AsString :=v_zym;
open;
dm.T_jxjhc.Close;
dm.T_jxjhc.Open;
while not eof do
begin
c_kyy:=fieldbyname('JW_JXJHC__KYY').AsString;
xnxqh:=fieldbyname('JW_JXJHC__XNXQH').AsString ;
if dm.T_jxjhc.FindKey([c_kyy,xnxqh]) then
dm.T_jxjhc.Delete;
q_jxjhc.next;
end;
end;
//删除主表记录
with q_deljxjhb do
begin
close;
params[0].AsString :=v_rxnf;
params[1].AsString :=v_zym;
open;
dm.T_jxjhb.Close;
dm.T_jxjhb.Open;
while not eof do
begin
c_kyy:=fieldbyname('JW_JXJHB__KYY').AsString;
if dm.T_jxjhb.FindKey([c_kyy]) then
dm.T_jxjhb.Delete;
q_deljxjhb.next;
end;
end;
end;
//以上是要删除原教学计划
with Q_rxnf_jxjh do
begin
close;
params[0].AsString :=s_rxnf;
params[1].AsString :=S_zym;
open;
if RecordCount=0 then
begin
showmessage('源教学计划不存在,请重新选择!');
exit;
end
else
begin
dm.T_jxjhb.Close;
dm.T_jxjhb.Open;
dm.T_jxjhb.edit;
//追加主表新记录 ,kyy是自动加!
while not Q_rxnf_jxjh.eof do
begin
// zyh:=FieldByName('JW_JXJHB__zyh').AsString ;
//用新专业名称上,v_zyh
kch:=fieldbyname('JW_JXJHB__KCH').asstring;
kclb:=fieldbyname('JW_JXJHB__KClb').asstring;
ksfs:=fieldbyname('JW_JXJHB__ksfs').asstring;
kslb:=fieldbyname('JW_JXJHB__kslb').asstring;
ZXS:=fieldbyname('JW_JXJHB__ZXS').asstring;
ZXF:=fieldbyname('JW_JXJHB__ZXF').asstring;
dm.T_jxjhb.IndexFieldNames:='JW_JXJHB__RXNF;JW_JXJHB__ZYH;JW_JXJHB__KCH';
if not dm.T_jxjhb.FindKey([v_rxnf,v_zyh,kch]) then
dm.T_jxjhb.AppendRecord(['',v_rxnf,v_zyh,kch,null,kclb,ksfs,kslb,null,null]);
Next ;
end;
//追加从表新记录 ,源对象存在就复制该记录
with q_jxjhc do
begin
//从教学计划主表中查找源专业计划
close;
params[0].AsString :=s_rxnf;
params[1].AsString :=s_zym;
open;
dm.T_jxjhc.Close;
dm.T_jxjhc.Open;
while not q_jxjhc.eof do
begin
//对一条教学计划,确定其复制品的主键KYY的值.
c_kyy:=fieldbyname('JW_JXJHC__KYY').AsString;
xnxqh:=fieldbyname('JW_JXJHC__XNXQH').AsString ;
xnxqh:=inttostr(strtoint(xnxqh)+10*(strtoint(v_rxnf)-strtoint(s_rxnf)));
kch:=fieldbyname('JW_JXJHB__kch').AsString;
// dm.T_jxjhc.Edit;
q_okyy_nkyy.Close;
q_okyy_nkyy.Params[0].AsString:=v_rxnf;
q_okyy_nkyy.Params[1].AsString:=kCH;
q_okyy_nkyy.Params[2].AsString:=v_zyh;
q_okyy_nkyy.Open;
v_kyy:=q_okyy_nkyy['JW_JXJHB__kyy'];
dm.T_jxjhc.Edit;
syzxs:=fieldbyname('JW_JXJHC__SYZXS').AsString ;
jkzxs:=fieldbyname('JW_JXJHC__JKZXS').AsString ;
jkoxs:=fieldbyname('JW_JXJHC__JKOXS').AsString ;
SYOXS:=fieldbyname('JW_JXJHC__SYOXS').AsString ;
xf:=fieldbyname('JW_JXJHC__XF').AsString;
dm.T_jxjhC.IndexFieldNames:='JW_JXJHC__KYY;JW_JXJHC__XNXQH';
if not dm.T_jxjhc.FindKey([v_kyy,xnxqh]) then
dm.T_jxjhc.AppendRecord([v_kyy,xnxqh,jkzxs,JKOXS,syzxs,SYOXS,xf]);
q_jxjhc.Next ;
end;
end;
end;
showmessage('教学计划复制完毕,请校对课时和学分是否延用!');
frmzyjxjhhz.close;
//
end;
end;
procedure TFrmzyjxjhhz.ListBox1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to listbox1.Items.Count -1 do
if listbox1.selected[i] then
begin
s_zym:=listbox1.Items[i];
break;
end;
// else
// s_zym:='';
end;
procedure TFrmzyjxjhhz.ListBox2Click(Sender: TObject);
var i:integer;
sql3:string;
begin
for i:=0 to listbox2.Items.Count -1 do
if listbox2.selected[i] then
begin
v_zym:=listbox2.Items[i];
break;
end;
dm.q_zy.close;
sql3:='';
sql3:=sql3+' SELECT SYS_ZY__ZYH, SYS_ZY__ZYM FROM SYS_ZY ';
sql3:=sql3+' where SYS_ZY__ZYM='''+v_zym+'''';
dm.q_zy.SQL.Clear;
dm.q_zy.SQL.Add (sql3);
dm.q_zy.Open;
// while not dm.q_zy.Eof do
v_zyh:=dm.q_zy.FieldValues['SYS_ZY__ZYH'];
end;
procedure TFrmzyjxjhhz.ComboBox1Change(Sender: TObject);
var
sql0,rxnf:string;
begin
rxnf:=combobox1.Text;
sql0:=sql0+' SELECT DISTINCT';
sql0:=sql0+' SYS_ZY.SYS_ZY__ZYM , SYS_ZY.SYS_ZY__ZYH';
sql0:=sql0+' FROM SYS_BJ INNER JOIN';
sql0:=sql0+' SYS_ZY ON SYS_BJ.SYS_BJ__ZYH = SYS_ZY.SYS_ZY__ZYH';
sql0:=sql0+' WHERE SYS_BJ.SYS_BJ__RXNF ='''+rxnf+'''';
with dm.Q1 do
begin
close;
sql.clear;
sql.Add(sql0);
open;
listbox1.Items.Clear ;
while not eof do
begin
listbox1.Items.Add(fieldbyname('SYS_ZY__ZYM').Value) ;
next;
end;
end;
end;
procedure TFrmzyjxjhhz.ComboBox2Change(Sender: TObject);
var
sql1,rxnf:string;
begin
rxnf:=combobox2.Text;
sql1:=sql1+' SELECT DISTINCT';
sql1:=sql1+' SYS_ZY.SYS_ZY__ZYM , SYS_ZY.SYS_ZY__ZYH';
sql1:=sql1+' FROM SYS_BJ INNER JOIN';
sql1:=sql1+' SYS_ZY ON SYS_BJ.SYS_BJ__ZYH = SYS_ZY.SYS_ZY__ZYH';
sql1:=sql1+' WHERE SYS_BJ.SYS_BJ__RXNF ='''+rxnf+'''';
with dm.Q1 do
begin
close;
sql.clear;
sql.Add(sql1);
open;
listbox2.Items.Clear ;
while not eof do
begin
listbox2.Items.Add(fieldbyname('SYS_ZY__ZYM').Value) ;
next;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -