私は前にこのようなことをしたことは一度もありません。それに単一の整数を渡すだけで動作しますが、POSITION_IDに使用する必要があるリストがあります。このリストには例えば1,2,3などがあります。これにより例外The specified object must not be an instance of a generic type
がExecuteParameterQuery
からスローされます。リストが関わっているときにこれをやる方法がわからない。SQL Selectステートメントwhere = 'List'?
ヘルプの変更点。
public List<Dictionary<string, string>> SelectedLineHistory(string partProgram, string machineId, List<int> Line2, bool orderByDate = false)
{
List<Dictionary<string, string>> results = new List<Dictionary<string, string>>();
string query = "SELECT MACHINE_ID, PART_PROGRAM, POSITION_ID, DATE_TIME, SAVE_DATE_TIME,DWELL_STIME, ADJUSTED_AMOUNT, DWELL_OFFSET, EMPL_ID " +
"FROM MPCS.WJ_DWELL_OFFSETS_HIST " +
"WHERE PART_PROGRAM = ? and MACHINE_ID = ? and POSITION_ID = ? ";
if (orderByDate)
{
query += " order by save_date_time desc, position_id asc";
}
List<OleDbParameter> queryParameters = new List<OleDbParameter>();
foreach (var line in Line2)
{
queryParameters.Clear();
queryParameters.Add(new OleDbParameter("PART_PROGRAM", partProgram));
queryParameters.Add(new OleDbParameter("MACHINE_ID", machineId));
queryParameters.Add(new OleDbParameter("POSITION_ID", Line));
results = this.ExecuteParameterQuery(query, queryParameters);
}
return (results);
}
Iエラー私の代わりにresults.add
のresults = this.ExecuteParameterQuery(query, queryParameters);
を使用していないが、私はそれがここに私の問題だとは思わない場合。
それはまだ元のエラーにThe specified object must not be an instance of a generic type
を生成し、これは私がそれを呼び出す方法です。 positionIDのリストを使用する必要がある前にもう一度働いた
私はまだ「new」を提案したものを理解しようとしていますが、それをまだ発見していないだけです。それが今で動作しますが、代わりに私が多くの行番号の結果を与えるLINE2にある何らかの理由
public void SelectedHistory(bool showMessages = false)
{
List<Dictionary<string, string>> resultHistory = new List<Dictionary<string, string>>();
string machineId = cboMachine.Text.Trim().ToUpper();
string partProg = cboPartPrograms.Text.Trim().ToUpper();
lvViewHistory.Items.Clear();
if (!String.IsNullOrEmpty(machineId) && !String.IsNullOrEmpty(partProg))
{
resultHistory = oracleConnection.SelectedLineHistory(partProg, machineId, Line2, true);
if (resultHistory != null && resultHistory.Count > 0)
{
foreach (Dictionary<string, string> d in resultHistory)
{
ListViewItem lvi = new ListViewItem(d["MACHINE_ID"]);
lvi.SubItems.Add(d["PART_PROGRAM"]);
lvi.SubItems.Add(d["POSITION_ID"]);
lvi.SubItems.Add(d["DATE_TIME"]);
lvi.SubItems.Add(d["SAVE_DATE_TIME"]);
lvi.SubItems.Add(d["DWELL_STIME"]);
lvi.SubItems.Add(d["ADJUSTED_AMOUNT"]);
lvi.SubItems.Add(d["DWELL_OFFSET"]);
lvi.SubItems.Add(d["EMPL_ID"]);
lvViewHistory.Items.Add(lvi);
}
}
else
{
MessageBox.Show("No History Found");
}
}
else
{
MessageBox.Show("Please select Machine_Id and Part Program");
}
lvViewHistory.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
}
、それはちょうど私の最後の行番号から結果が得られます。
回線2は、1,2,3を持っているのであれば、私は行番号は行番号はそれはのように私には見えます3.
を試してみてください – STLDeveloper
line2の1行に1回正しく入力してください。 – Lee
SQLを使用する方法については、in節を参照してください。 http://www.w3schools.com/sql/sql_in.asp – Hakunamatata