一个有难度的问题,高分求助
tigi 2005-04-22 09:22:42 我在给客户做一个接口程序,由于两个系统都是ORACLE的数据库,但字符集不同,因此,我在一台电脑上安装了ora73和ora8i两个客户端程序。分别连接两台服务器。连接73的实例名为SERVER_HIS,连接8i的实例名为yks_test
程序处理如下:
1、在主应用上脚本如下:
string ls_logpass,ls_logid,ls_servername
string ls_logpass_yb,ls_logid_yb,ls_servername_yb
string ls_patient_id,LS_YB,ls_id
//连接HIS服务器
ls_logpass = ProfileString('insur.ini', "DATABASE","LogPassword", "")
ls_logid = ProfileString('insur.ini', "DATABASE","logid", "")
ls_servername = ProfileString('insur.ini', "DATABASE","servername", "")
SQLCA.DBMS = "O73 ORACLE 7.3"
SQLCA.LogPass = ls_logpass
SQLCA.ServerName = ls_servername
SQLCA.LogId = ls_logid
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect ;
if sqlca.sqlcode = -1 then
return
end if
//连接医保服务器
gtrans_yb = create Transaction
ls_logpass_yb = ProfileString('insur.ini', "DATABASE_YB","LogPassword", "")
ls_logid_yb = ProfileString('insur.ini', "DATABASE_YB","logid", "")
ls_servername_yb = ProfileString('insur.ini', "DATABASE_YB","servername", "")
gtrans_yb.DBMS = "O84 Oracle8/8i (8.x.4+)"
gtrans_yb.LogPass = ls_logpass_yb
gtrans_yb.ServerName = ls_servername_yb
gtrans_yb.LogId = ls_logid_yb
gtrans_yb.AutoCommit = False
gtrans_yb.DBParm = ""
connect using gtrans_yb;
if gtrans_yb.sqlcode = -1 then
return
end if
open(w_main)
在w_main的OPEN事件中的程序如下:
datastore lds_GetInsurPatient
string ls_charge_type,ls_patient_id,ls_yb_zyh,ls_ordered_by
long ll_patient,ll_i,ll_row
int li_visit_id
string ls_item_class,ls_item_code,ls_item_spec,ls_units,ls_his_item_name,ls_djh
dec ld_je,ld_sl,ld_dj,ld_zfje
long ll_djh,ll_item_no
datetime ldt_bill_date_time
int li_temp
string ls_xmbm,ls_czmlb,ls_ybxmdm,ls_ybxmmc,ls_dept,ls_dept_code,ls_tjtzbz
li_temp = 0
dw_1.settransobject(gtrans_yb)
//得到在院医保病人
ls_charge_type = ProfileString('insur.ini', "APP","CHARGE_TYPE", "")
lds_GetInsurPatient = create datastore
lds_GetInsurPatient.dataobject = 'd_get_insur_patient'
lds_GetInsurPatient.settransobject(sqlca)
lds_GetInsurPatient.retrieve(ls_charge_type)
//通过循环取每个医保病人
ll_patient = lds_GetInsurPatient.rowcount()
for ll_i = 1 to ll_patient
ls_patient_id = lds_GetInsurPatient.getitemstring(ll_i,'patient_id')
IF LS_PATIENT_ID ='D50000' THEN
MESSAGEBOX("","ABC")
END IF
li_visit_id = lds_GetInsurPatient.getitemnumber(ll_i,'visit_id')
ls_dept = lds_GetInsurPatient.getitemstring(ll_i,'dept_admission_to')
//到对照表去医保科室
select yb_code into :ls_dept_code from insurance.hisdept_vs_ybdept where his_dept_code =:ls_dept;
if sqlca.sqlcode = 100 then
ls_dept_code = '12'
end if
//到医保库中取病人信息,判断是否为本医保病人
SELECT zyh into :ls_yb_zyh from sys_yw_brjbxx where zyh=:ls_patient_id using gtrans_yb;
// ll_row = DW_1.retrieve(ls_patient_id)
//如果是本医保病人,则进行数据导入
if sqlca.sqlcode = 0 then
//取医保单据号
Select maxdjh into :ls_djh from sys_dm_maxdjh where djdm= '04' using gtrans_yb;
.............
在上面这段程序中,当我执行
SELECT zyh into :ls_yb_zyh from sys_yw_brjbxx where zyh=:ls_patient_id using gtrans_yb;
时,取不出数据来,而我在sql下直接写这条语句是正确的,请问这是怎么回事啊?
是不是和两个客户端有关?