我有一个关于简化VBScript / SQL代码的基本问题。我有一个工作脚本从一个表中提取数据,通过分隔符' |'解析它,并将其重新插入第二个254列表。在这样做时,我明确地写出了插入的每个字段,以及数组的每个部分的值。显然,这不是非常有效。为了简化这一点,我一直试图遍历数组,插入结果行,然后移动到下一行,如下所示:
'assume declaration of recordset, SQL connection, pull from first table, ect.
if recordset.EOF then
wscript.echo "No new records found."
else
Do While NOT Recordset.EOF
dump = recordset("data")
if dump <> "" then
dump = Replace(dump,"'","")
cleanup=split(field,"|")
if instr(cleanup(0),"RECORD") then
for i = 1 to 254
cleanup(i)= cleanup(i) & "','"
i= i + 1
next
end if
strRecsql="INSERT INTO records_fields VALUES ('" & cleanup & "')"
connection.execute strRecsql
现在,当我明确说明所有字段和值时,我解决了所有数据类型不匹配问题。现在我正在循环,我得到数据类型不匹配错误,我认为(总是危险的)意味着脚本到达插入点并失败。
我的长代码包含了类似的内容 清理(1)&amp; &#34;&#34; &安培;清理(2)&amp; &#34;&#34; &#39;&#39;等等 显然,我在尝试循环时做错了 - 由于数据类型不匹配,我感到很难过。
非常感谢对这个问题的任何见解。我喜欢有一个有效的代码,而且我对VBScript和SQL之间的数据类型交换一般感到好奇。我一般在变体类型和SQL类型上找到了一些优秀的资源,但没有解决交换的问题。
示例转储值:
"RECORD|2-10-15 00:00:00|SMITH|JOHN|+14.59|STAPLES| | | | | |AE15679|j2700| | |Office supplies| | |"
答案 0 :(得分:0)
好的,因为你没有回复我的上一条评论,我必须做出很多假设并主要根据样本值做出这个答案
RECORD|2-10-15 00:00:00|SMITH|JOHN|+14.59|STAPLES| | | | | |AE15679|j2700| | |Office supplies| | |
根据该示例,结果表明您不需要split
dump
值,因为直接将|
替换为', '
将解决问题。我的答案如下简化,所以不会显示所有代码,只需要一部分
dump = "RECORD|2-10-15 00:00:00|SMITH|JOHN|+14.59|STAPLES|" &
"| | | | |AE15679|j2700| | |Office supplies| | |"
maxLen = 1000
if Left(dump, 7) = "RECORD|" then
dump = "INSERT INTO records_fields VALUES ('" &
Replace(Mid(dump, 8, maxLen), "|","', '") & "')"
dump = Replace(dump, "' '", "''") ' Replace ' ' with '' if needed.'
dump = Replace(dump, "''''", "''") ' Replace '''' with '' if needed.'
end if
MsgBox dump
输出:
INSERT INTO records_fields VALUES ('2-10-15 00:00:00', 'SMITH', 'JOHN', '+14.59', 'STAPLES', '', '', '', '', '', 'AE15679', 'j2700', '', '', 'Office supplies', '', '', '')