有个道程序在PB9通过,但是11.5没通过
这道程序是让PB执行sqlupdate.dat内的SQL语句的,以-----*****作为分隔符,但是发现PB11.5里读取的是乱码,PB9读取正常,为什么?
下面是在bytes_read = FileRead(li_filenum, b) 那里读出SQL语句的
/加储存过程
string ls_sp_change_prod_mb,ls_sql_sp_change_prod_mb
//select name into :ls_sp_change_prod_mb from sysobjects where name='sp_change_prod_mb';
//if ls_sp_change_prod_mb='' then
//\\
ULong ls_fh
String ls_path_name
Integer li_filenum, loops, i
Long flen, bytes_read, new_pos
Blob b, tot_b
SetPointer(hourglass!)
ls_path_name = 'sqlupdate.dat'
flen = FileLength(ls_path_name)
li_filenum = FileOpen(ls_path_name, streammode!, Read!, lockread!)
If li_filenum = 1 Then
// flen=33000
If flen > 32765 Then
If Mod(flen, 32765) = 0 Then
loops = flen/32765
Else
loops = (flen/32765) + 1
End If
Else
loops = 1
End If
new_pos = 1
For i = 1 To loops
bytes_read = FileRead(li_filenum, b)
tot_b = tot_b + b
Next
FileClose(li_filenum)
String ls_sql
ls_sql = String(tot_b)
FileRead(ls_fh,ls_sql)
FileClose(ls_fh)
String l_all
String l_p1,l_p2,l_all2
Long s_p1,s_p2,row
String l_n,l_d,l_t
l_all = ls_sql
l_p1 = '-----*****'
l_p2 = '-----#####'
lab1:
s_p1 = Pos(l_all,l_p1)
s_p2 = Pos(l_all,l_p2)
If s_p1 >= 0 And s_p2 > 0 Then
l_n = Mid(l_all,s_p1, s_p2 - s_p1 + 10 )
l_all = mid(l_all, s_p2 + 10 , Len(l_all) - (s_p2 + 10) + 1 )
ls_sql_sp_change_prod_mb=l_n
execute immediate:ls_sql_sp_change_prod_mb using sqlca;
commit using sqlca;
Goto lab1
End If
//\\
else
messagebox('提醒','本文件夹下找不到sqlupdate.dat文件,请复制此文件到软件所在文件夹下!')
return
end if