本帖最后由 wwant 于 2009-12-3 14:57 编辑
自己写错了代码,和数据库无关,已修改状态....请管理人员关闭
===============================
很好,终于要问问题了 ,代码在下面,不是很完整,因为和ACCESS数据库在一起,不太容易发完整到可以运行的程度
我解释一下:以下代码标记了#50 的行就是报错的行 {$addfld.Execute($_F_Sql)}
该句的SQL 和数据库并没有错,因为循环的第一次是可以插入数据的,但循环的第二次就会报错。(既然第一次没问题,我认为语句本身没有问题)
以下语句再简化就是这样
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&$_GC_Dbname) ;连接数据库
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS2 = ObjCreate("ADODB.Recordset")
$RS2.ActiveConnection = $addfld_bur
$RS.Open ($_E_Sql)
While not $RS.eof
$RS2.Open ($_Bureau_Sql)
$_Virus_array[12] = $RS_Bur.Fields(0).value
$RS2.close
$addfld.Execute($_F_Sql)
$addfld.Execute($_F_Sql)
$addfld.Execute($_F_Sql)
$addfld.Execute($_F_Sql)
$addfld.close
$RS.movenext
WEnd
$RS.Close
$addfld.Close
以上操作中,我创建了两个表 $RS $RS2 但在$addfld循环第二次插入时报错,即使我加入了绿色的那些行,还是在循环的第二次报SQL的错
如果加入蓝色的行(这肯定是不可以的...)报错依旧....
暂时只有这些信息,那位能提供线索!...
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&$_GC_Dbname) ;连接数据库
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS2 = ObjCreate("ADODB.Recordset")
$RS2.ActiveConnection = $addfld_bur
$file = FileOpen("20091202.CSV", 0) ;合并后使用 $_Savefile 替换文件名
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$line =StringTrimRight($line,1)
$_D_Sql=Insert Into T1 (Art_Tid,Art_Title,Art_Auth,Art_Date,Art_Read,Art_Reply,Art_Url)"&" Values ("&$line&")"
$addfld.Execute($_D_Sql)
Wend
FileClose($file)
$_Lc_Title = $_Lc_Title&",IP"
$_E_Sql = "Select Art_Tid,Art_Title,Art_Auth,Art_Date,Art_Read,Art_Reply,Art_Url From Search"
$RS.Open ($_E_Sql)
While not $RS.eof
For $i = 0 to 11
$_Virus_array[$i] = $RS.Fields($i).value
Next
$_Bureau_Sql = "Select 名称 From "&$_GC_Bureau&" where 起始IP<='"&$_Virus_array[11]&"' and 终止IP>='"&$_Virus_array[11]&"'"
$RS2.Open ($_Bureau_Sql)
$_Virus_array[12] = $RS_Bur.Fields(0).value
$RS2.close
$_Lc_Title = $_Lc_Title&",分局名称,采集时间"
$_Ins_str = ""
$_Virus_array[13]=_NowCalcDate()
For $i = 0 to 13
$_Ins_str = $_Ins_str&",'"&$_Virus_array[$i]&"'"
Next
$_Ins_str = StringMid ($_Ins_str,2)
$_F_Sql="Insert Into "&$_GC_Data&" ("&$_Lc_Title&")"&" Values ("&$_Ins_str&")"
#49 MsgBox(4096,"----",$_F_Sql)
#50 $addfld.Execute($_F_Sql)
#51 $RS.movenext
WEnd
$RS.Close
$addfld.Close
|