none
How to retrieve Date fields from an Access MDF on VS c++ Net 2005 RRS feed

  • Question

  • I Apologize if this isn't the forum to ask this...
    I have a MS Access (MDB) file with a table with 2 date fields, i want to read from a dialog on my app (on MS Visual .NET Studio 2005), here's the code I've been using do far:
    Code Snippet

    hr=theApp.m_cs.Open(theApp.m_ds);
    if(SUCCEEDED(hr)) {


    theApp.m_cs.StartTransaction();


    theApp.m_cs.Commit();
    CCommand< CDynamicAccessor > cmd;
    CComBSTR query(_T("SELECT NumContrato, NumClie, FechaC, FechaCob, Inversion, NoCobrador, NoVendedor, Total, Plazo, Pagos FROM Contrato"));
    CString string(query.m_str);
    cmd.Open(theApp.m_cs,string);

    hr = cmd.MoveFirst();

    query=static_cast< BSTR >(cmd.GetValue(1));
    CString csres(query.m_str);
    this->m_numc=(int)*(query.m_str);
    query=static_cast< BSTR >(cmd.GetValue(2));
    m_numcte=(int)*(query.m_str);
    query=static_cast< BSTR >(cmd.GetValue(3));
    //m_fecc=(int)*(query.m_str);

    MessageBox(csres);
    theApp.m_cs.Close();
    }



    FechaC, FechaCob, are the two Dates I want to retrieve, but when I debug, it reads a 0 (zero) from the date fields, is there a limitation? can they be read? is there a special way to read them?
    > thanks in advance!

    -----
    Me!
    Thursday, May 3, 2007 5:40 AM

Answers

  • I'm not experienced in templates, but it looks strange for me and you should check the type of the returned value.

    If your field is of the type Date/Time then I'm not sure that simple casting is correct, since I would expect GetValue to return the pointer into the buffer with the actual data and I presume that the datatype there should be DBTYPE_DATE. Perhaps you need to create a specific accessor and explicitly request conversion to a string type.

    Thursday, May 3, 2007 9:47 PM
    Moderator

All replies

  • I'm not experienced in templates, but it looks strange for me and you should check the type of the returned value.

    If your field is of the type Date/Time then I'm not sure that simple casting is correct, since I would expect GetValue to return the pointer into the buffer with the actual data and I presume that the datatype there should be DBTYPE_DATE. Perhaps you need to create a specific accessor and explicitly request conversion to a string type.

    Thursday, May 3, 2007 9:47 PM
    Moderator
  • Thanks A lot this is what i've done:
    Code Snippet

    DATE *d=(DATE*)(cmd.GetValue(3));

                COleDateTime D(*d);

                m_fec=D;


    Sorry for the such a noob question you've been helpful! :)!

    Thursday, May 3, 2007 11:51 PM