2017-05-18 10 views
0

CSVからアイテムをアップロードするスクリプトがあります。 CSVには3列あり、データベースには3列あります。SQL Server VBScriptで間違った値を挿入する

コード(データ型はnvarchar 255)
名(データ型はnvarchar 255)
価格(金)

スクリプトは、次の

' --- Connect to File.CSV 
csvConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
&Server.MapPath("..\upload") &";Extended 
Properties='text;HDR=Yes;FMT=Delimited';" 
Set connCSV = Server.CreateObject("ADODB.Connection") 
connCSV.Open csvConnStr 


set csvCmd = Server.CreateObject("ADODB.Command") 
csvCmd.ActiveConnection = connCSV 
csvCmd.CommandType = 1 
csvCmd.CommandText = "SELECT * FROM upload.csv" 
set rsCsv = csvCmd.Execute 

csvCode= rsCsv.fields.item(0) 
csvName= rsCsv.fields.item(1) 
csvPrice = rsCsv.fields.item(2) 

注である - 私がそうであるようにcsvファイルをループしているommitedそれは私の問題の原因だとは思わないが、要求に応じて含めることができます。

set insertCmd = Server.CreateObject("ADODB.Command") 
insertCmd.ActiveConnection = conn 
insertCmd.CommandType = 1 
insertCmd.CommandText = "INSERT INTO tblProducts (code, name, price) VALUES (?,?,?)" 
insertCmd.Parameters.append(
insertCmd.CreateParameter("@code",200,1,255,csvCode)) 
insertCmd.Parameters.append(
insertCmd.CreateParameter("@name",200,1,255,csvName)) 
insertCmd.Parameters.append(
insertCmd.CreateParameter("@price", 6, 1, , csvPrice)) 
insertCmd.Execute 

私のCSVが

Item Code, Item Name, Item Price 
00001, First Item, 100 
00002, Second Item, 100 

スクリプトは、商品コードは、文字「F」で始まるシナリオを除いて罰金挿入する以下の構造を有しています。

例、

Item Code, Item Name, Item Price 
F0445, Item X, 200 

レコードを挿入しますが、データベース内のだろうが、そのような

Item Code, Item Name, Item Price 
G0445, Item Y, 200 
FG0445, Item X, 200 

などのコードが挿入されますので、コード= 445

これは、唯一のFである必要がありますかなり大丈夫。 FはVBScriptの特殊文字ですか?どのようにコード全体を挿入しないのでしょうか?

+1

落ち着いて、原因を1つずつ見つけようとしてください。 –

+0

SQL文のvarcharsの周りに一重引用符を使用していますか?完成したSQL文は、実行するとどのように見えますか? – Sourcery

+0

ありがとうreds。こんにちは@ソーセージ、私はSQLステートメントの変数の周りに単一引用符を持っていません。私はSQLステートメントを印刷し、その値を縮小コードとして挿入しています。私はcsvCode = rsCsv.fields.item(0)とここではcsvCode = 0445の後にプリントを追加しました。最初の数文字は読み込み中です(F!で始まるときだけです)。 – ochhii

答えて

1

コメントからの回答。

Fは何らかの形でデータを書式化していると考えているので、値を 'F0445'にするとデータベースにvarcharを追加する必要があります。 INSERT INTO tblProducts(code、name、price)VALUES( 'F0445'、 'Item X'、200)では、シングルクォートはsqlに挿入されたテキストであることを通知します。

また、最後のコメントから、Excelの列/セルの書式をテキストに設定します。

関連する問題