C#を使用して、.NET 4、SQL、Visual Studioの2010とSQL Serverの管理者2008C#のdata.fill(変換に失敗)
こんにちはみんなは、101疑問を解決するのは簡単その同じ古いのように思えるが、何かがあり私を悩ましていた。
私のプログラムはクエリを実行し、データを取得し、データセットを埋めます。私のフィールドの
つのPG(製品群)と呼ばれ、NVARCHAR(255)に設定されています。 ほとんどのpgは30,50,12などの数字ですが、T1Bや50aなどの例外があります。
何らかの理由で変換エラーが発生しています。 「intにvarchar型の値が 『T1B』を変換する際の変換に失敗しました」
。
私のコードでは、私が使用しているのはdata.fill()です。
は、それは私ですか、それはint型のようなルックスを引っ張る最初のレコードのためdata.fillが整数としてフィールドPGを割り当てるしようとしているかのように、それは思われるのでしょうか? 正直言って、私はいつもfillがSQLデータ型が同等かどうかを模倣すると思っていました。
うまくいけば、それは私が見落としやすいものです。
もっとコードを表示したい場合はお知らせください。この投稿を編集します。
感謝
SQLクエリ
USE [ShaftData]
GO
/****** Object: StoredProcedure [dbo].[GetSalesParetotemp] Script Date: 03/14/2012 09:30:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetSalesParetotemp]
@acct varchar(255),
@From date,
@Too date
AS
SELECT i.Acct,
i.Name,
i.Document,
i.Part,
i.Qty,
i.Unit,
dbo.NEWPareto.Pareto,
i.pg,
dbo.MyPgTable.PgName,
i.[DateTime]
FROM
OPENQUERY(SACBAUTO, 'SELECT dbo.iHeads.acct,
dbo.iHeads.name,
dbo.iLines.Document,
dbo.iLines.Part,
dbo.iLines.Pg,
dbo.iLines.Qty,
dbo.iLines.unit,
dbo.iHeads.[DateTime]
FROM Autopart.dbo.iheads INNER JOIN Autopart.dbo.iLines ON
Autopart.dbo.Iheads.document = autopart.dbo.iLines.document
GROUP By dbo.iHeads.acct,
dbo.iHeads.name,
dbo.iLines.Document,
dbo.iLines.Part,
dbo.iLines.Pg,
dbo.iLines.Qty,
dbo.iLines.unit,
dbo.iHeads.[DateTime]
') i
left JOIN
dbo.NEWPareto
ON
i.Part collate SQL_Latin1_General_CP1_CI_AS = dbo.NEWPareto.Part
left JOIN
dbo.MyPgTable
ON
i.pg collate SQL_Latin1_General_CP1_CI_AS = dbo.MyPgTable.[pGroup]
WHERE
(i.[DateTime] BETWEEN @From AND @Too) AND
i.Acct = @acct
AND i.pg != 60
AND i.pg != 61
AND i.pg != 62
GROUP BY i.Acct,
i.Name,
i.Document,
i.Part,
i.Qty,
i.Unit,
dbo.NEWPareto.Pareto,
i.pg,
dbo.MyPgTable.PgName,
i.[DateTime]
そして、ここではそれはvarchar型 'に言及ので、私は、それがクエリ自体によって引き起こされるSQLエラーだと信じてい
try
{
string myConn = "Server=derp;" +
"Database=derp;" +
"uid=derp;" +
"pwd=derp;" +
"Connect Timeout=120;";
string acct;// test using 1560
SqlConnection conn = new SqlConnection(myConn);
SqlCommand Pareto = new SqlCommand();
BindingSource bindme = new BindingSource();
SqlDataAdapter adapt1 = new SqlDataAdapter(Pareto);
DataSet dataSet1 = new DataSet();
DataTable table1 = new DataTable();
acct = Acct;
string fromDate = this.dateTimePicker1.Value.ToString("MM/dd/yyyy");
string tooDate = this.dateTimePicker2.Value.ToString("MM/dd/yyyy");
Pareto.Connection = conn;
Pareto.CommandType = CommandType.StoredProcedure;
Pareto.CommandText = "dbo.GetSalesParetotemp";
Pareto.CommandTimeout = 120;
Pareto.Parameters.AddWithValue("@acct", acct);
Pareto.Parameters.AddWithValue("@from", fromDate);
Pareto.Parameters.AddWithValue("@too", tooDate);
SetCheckBoxValue(true);
SetPictureBoxVisibility(true);
//label1.Visible = true;
adapt1.Fill(dataSet1, "Pareto");
//label1.Visible = false;
SetCheckBoxValue(false);
SetPictureBoxVisibility(false);
SetDataGrid(true, dataSet1, "Pareto", DataGridViewAutoSizeColumnsMode.AllCells);
dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCells);
}
catch (Exception execc)
{
MessageBox.Show("Whoops! Seems we couldnt connect to the server!"
+ " information:\n\n" + execc.Message + execc.StackTrace,
"Fatal Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
関連するコードを貼り付けることはできますか? :) –
問題はありません。ここではクエリとここにそれを使用するメソッドがあります – lemunk