لماذا أحصل على "عدم تطابق نوع البيانات في تعبير المعايير" مع هذا الرمز?[مكررة]

StackOverflow https://stackoverflow.com//questions/22078830

سؤال

أحاول إدراج سجل في جدول الوصول مس مع هذا الرمز:

public void InsertIntoPPTData(string tx, string site_no, string xmlfile, DateTime collect_dttm, string ppt_user, string tx_memo, string file_beg, string file_end)
{
    string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Duckbilled;Password=Platypus;Data Source=C:\RGT\NotSoBigData.MDB;Jet OLEDB:System database=C:\CCRWin\Data\jftfdcsc.mdw";
    using (var conn = new OleDbConnection(connStr))
    {
        using (var cmd = conn.CreateCommand())
        {
            cmd.CommandText = 
                @"INSERT INTO tx_tillermantea (tx, site_no, xmlfile, collect_dttm, ppt_user, tx_memo, file_beg, file_end) 
                  VALUES(@txval, @siteNum, @xmlfileName, @DTNow, @PPTUser, @TXMemo, @strfile_beg, @strfile_end)";
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@txval", tx);
            cmd.Parameters.AddWithValue("@siteNum", site_no);
            cmd.Parameters.AddWithValue("@xmlfileName", xmlfile);
            cmd.Parameters.AddWithValue("@DTNow", collect_dttm);
            cmd.Parameters.AddWithValue("@PPTUser", ppt_user);
            cmd.Parameters.AddWithValue("@TXMemo", tx_memo);
            cmd.Parameters.AddWithValue("@strfile_beg", file_beg);
            cmd.Parameters.AddWithValue("@strfile_end", file_end);
            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
}

...لكن " كمد.إكسكوتينونكيري () ؛ " خط يفجر مع:

النظام.البيانات.أوليدب.لم يتم التعامل مع أوليدبيكسيبتيون بواسطة رمز المستخدم الرسالة = عدم تطابق نوع البيانات في تعبير المعايير.المصدر = محرك قاعدة بيانات مايكروسوفت أوفيس الوصول ستاكتريس:في النظام.البيانات.أوليدب.أوليدبكوماند.إكسيكوتكوماندتيكسترورهاندلينغ (أولدبرسولت هر) في النظام.البيانات.أوليدب.أوليدبكوماند.إكسكيوتكوماندتكستفورسينغلريسولت(تاغدبارامز دبارامز ، كائن و إيكسيكوتيرزولت) في النظام.البيانات.أوليدب.أوليدبكوماند.إكسكيوتكوماندتكست (كائن و إكسيكوتيريسولت) في النظام.البيانات.أوليدب.أوليدبكوماند.إكسيكوتكوماند (كوماندبيهافيور السلوك ، كائن و إكسيكوتيريسولت) في النظام.البيانات.أوليدب.أوليدبكوماند.إيكسيكوتيريديرينتينال (كوماندبيهافيور السلوك ، طريقة سلسلة) في النظام.البيانات.أوليدب.أوليدبكوماند.إكسيكوتينونكيري()

تخميني هو أن المشكلة هي قيمة التاريخ والوقت وحيد ، ولكن ما هو الخطأ في:

cmd.Parameters.AddWithValue("@DTNow", collect_dttm);

?

أنا يمر " التاريخ والوقت.الآن " كما جمع _ دتم أرغ.

هل كانت مفيدة؟

المحلول

يظهر الرابط المقدم إصلاحين على الأقل لهذا;لقد وجدت أن الأكثر وضوحا هو ببساطة إزالة المعلمة داتيتيم من المزيج وحقن مباشرة قيمة داتيتيم من داخل العبارة إدراج عن طريق استبدال المعلمة "دتنو" مع دعوة إلى "الآن ()" مثل ذلك:

cmd.CommandText = 
    @"INSERT INTO tx_tillermantea (tx, site_no, xmlfile, collect_dttm, ppt_user, tx_memo, file_beg, file_end) 
      VALUES(@txval, @siteNum, @xmlfileName, Now(), @PPTUser, @TXMemo, @strfile_beg, @strfile_end)";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top