ここで間違っていることを理解できないので、私は助けが必要です。DateTimeが正しくフォーマットされていない/時間が短縮されている
初期設定:
MS Access database (.mdb).
MS Office 2010 installed.
MS SQL Server 2008
私はMS AccessデータベースにMS SQL Server 2008のからレコードを同期するルーチンを構築しました。テーブルが同一であることが日常の一部テーブルレイアウトやフィールド
の数に来るときINSERT SQL
声明
とSQL文の一部は、このコード
//Query to execute
cmdToExecute.CommandText = "INSERT INTO " + tableName +
"(EquipmentID, TimeInspected) VALUES(" +
"'" + this._strEquipmentId.ToString() + "'," +
"'" + this._dtTimeInspected.Value.ToString("yyyy-MM-dd hh:mm:ss tt") + "'";
_stTimeInspected
がsqlDateTime
として宣言されています。
何らかの理由で、私はMS Accessデータベーステーブルで日付と時刻を一緒に取得できません。私も使用しようと_dtTimeInspected.Value.ToString("yyyy-MM-dd hh:mm:ss tt")
:私はthis._dtTimeInspected.Value.ToString("yyyy-MM-dd")
のような形式を使用すると、私はこれを使用する場合
私は、日付を取得することができ、または this._dtTimeInspected.Value.ToString("hh:mm:ss tt")
は、私は時間に
を得ることができますが、何らかの理由時間のために切り捨てられていますパラメータ化クエリ
PARAMETERS [@EquipmentID] Text (255), [@TimeInspected] DateTime;
INSERT INTO VisualInspectionHistory (EquipmentID, , DateInspected, TimeInspected, RecordIsUpdated, DateSync, TimeSync)
SELECT [@EquipmentID] AS Expr1, [@TimeInspected] AS Expr2
/// <summary>
/// Purpose: Insert new record into database table
/// </summary>
/// <returns></returns>
/// <remarks></remarks>
public override bool Insert()
{
OleDbCommand cmdToExecute = new OleDbCommand();
cmdToExecute.CommandText = "VisualInspection_Insert";
cmdToExecute.CommandType = CommandType.StoredProcedure;
cmdToExecute.Connection = conMainConnection;
try
{
cmdToExecute.Parameters.Add(new OleDbParameter("@EquipmentID", (OleDbType)OleDbType.VarChar, 25)).Value = _strEquipmentID.ToString();
cmdToExecute.Parameters.Add(new OleDbParameter("@TimeInspected", (OleDbType)OleDbType.Date)).Value = (DateTime)(_dtTimeInspected);
if (bMainConnectionIsCreatedLocal)
{
//Open connction
conMainConnection.Open();
}
else
{
if (cpMainConnectionProvider.IsTransactionPending)
{
cmdToExecute.Transaction = cpMainConnectionProvider.CurrentTransaction;
}
}
//Execute query
iRowsAffected = cmdToExecute.ExecuteNonQuery();
return true;
}
catch (OleDbException ex)
{
//Some error occured. Bubble it to caller and encapsulate Exception object
throw ex;
}
catch (Exception ex)
{
//Some error occured. Bubble it to caller and encapsulate Exception object
throw ex;
}
finally
{
if (bMainConnectionIsCreatedLocal == true)
{
//Close connection
conMainConnection.Close();
}
cmdToExecute.Dispose();
}
}
助けていただければ幸いです。
いただきありがとうございますか!そうすれば、最初にすべての変換を避けることができます... –
私はそれを試みました。私はMS Accessデータベースでクエリを作成しました。同じ結果 –
私はMS Access内でクエリを作成することを提案していませんでした...私は非常に異なるパラメータでクエリを使用することを提案していました。 –