Search code examples
c#ms-accessoledb

C# Access OleDB add Time and date separately


I build a program in C# to replace the old program in VB6 and I have to use this old database and cant change it The red mean date and the blue mean the time But I have no idea how to do that in C# I have a DateTime only

enter image description here

How do I add it?

My code :

public void GetExternalTestObjectList(DateTime DateTest,DateTime TimeTest,
            string NuTest,string Typebat,string TxtNuSidra,int NuTestBat,string NuCod,
            int numtest,double OCV,string FaultOCV,double CCV,string FaultCCV,double dccvocv,
            string Name,int focvn, int fccvn, int nchek, int fotd, double eqfolt,
            string tc, string cc, string oclc, string ochc, string cclc, string cchc,
            double dccvocvsc, string dccvocvn, double dccvocvnN, double dccvocvscl)
        {
            try
            {
                using (OleDbConnection openCon = new OleDbConnection(localConnectionString))
                {

                    string query = "INSERT into [data] ([Date Test], [Time Test]," +
                        "[Nu' Test],[Type bat],[TxtNuSidra],[Nu' Test bat],[Nu' Cod]," +
                        "[numtest],[OCV],[Fault OCV],[CCV],[Fault CCV],[dccvocv],[Name]," +
                        "[focvn],[fccvn],[nchek],[fotd],[eqfolt],[tc],[cc],[oclc],[ochc]," +
                        "[cclc],[cchc],[dccvocvsc],[dccvocvn],[dccvocvnN],[dccvocvscl]) " +
                        "VALUES (@DateTest, @TimeTest, @NuTest, @Typebat, @TxtNuSidra," +
                        "@NuTestBat, @NuCod,@numtest, @OCV, @FaultOCV, @CCV, @FaultCCV, @dccvocv, " +
                        "@Name,@focvn, @fccvn, @nchek, @fotd, @eqfolt, @tc, @cc, @oclc, @ochc, @cclc," +
                        "@cchc, @dccvocvsc, @dccvocvn, @dccvocvnN, @dccvocvscl)";
                    using (OleDbCommand command = new OleDbCommand(query))
                    {
                        command.Parameters.AddWithValue("@DateTest", DateTest);
                        command.Parameters.AddWithValue("@TimeTest", TimeTest);
                        command.Parameters.AddWithValue("@NuTest", NuTest);
                        command.Parameters.AddWithValue("@Typebat", Typebat);
                        command.Parameters.AddWithValue("@TxtNuSidra", TxtNuSidra);
                        command.Parameters.AddWithValue("@NuTestBat", NuTestBat);
                        command.Parameters.AddWithValue("@NuCod", NuCod);
                        command.Parameters.AddWithValue("@numtest", numtest);
                        command.Parameters.AddWithValue("@OCV", OCV);
                        command.Parameters.AddWithValue("@FaultOCV", FaultOCV);
                        command.Parameters.AddWithValue("@CCV", CCV);
                        command.Parameters.AddWithValue("@FaultCCV", FaultCCV);
                        command.Parameters.AddWithValue("@dccvocv", dccvocv);
                        command.Parameters.AddWithValue("@Name", Name);
                        command.Parameters.AddWithValue("@focvn", focvn);
                        command.Parameters.AddWithValue("@fccvn", fccvn);
                        command.Parameters.AddWithValue("@nchek", nchek);
                        command.Parameters.AddWithValue("@fotd", fotd);
                        command.Parameters.AddWithValue("@eqfolt", eqfolt);
                        command.Parameters.AddWithValue("@tc", tc);
                        command.Parameters.AddWithValue("@cc", cc);
                        command.Parameters.AddWithValue("@oclc", oclc);
                        command.Parameters.AddWithValue("@ochc", ochc);
                        command.Parameters.AddWithValue("@cclc", cclc);
                        command.Parameters.AddWithValue("@cchc", cchc);
                        command.Parameters.AddWithValue("@dccvocvsc", dccvocvsc);
                        command.Parameters.AddWithValue("@dccvocvn", dccvocvn);
                        command.Parameters.AddWithValue("@dccvocvnN", dccvocvnN);
                        command.Parameters.AddWithValue("@dccvocvscl", dccvocvscl);


                        command.Connection = openCon;
                        openCon.Open();
                        int recordsAffected = command.ExecuteNonQuery();
                        openCon.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

I got the next error :

System.Data.OleDb.OleDbException: 'Data type mismatch in criteria expression.'

This is how my table look like :

enter image description here


Solution

  • You can simply use the Date property from a DateTime object to get a DateTime part with zero as time set and the TimeOfDay property to get the time part of the DateTime object as TimeSpan.

    This should work...