ADO中_variant_t变量的使用与转换

  1. // Convert.h: interface for the CConvert class. 
  2. // 
  3. ////////////////////////////////////////////////////////////////////// 
  4. #if !defined(AFX_CONVERT_H__EC38F865_4607_4659_BAC8_AA6096C50EC7__INCLUDED_) 
  5. #define AFX_CONVERT_H__EC38F865_4607_4659_BAC8_AA6096C50EC7__INCLUDED_ 
  6. #if _MSC_VER > 1000 
  7. #pragma once 
  8. #endif // _MSC_VER > 1000 
  9. ////////////////////////////////////////////////////////////////////// 
  10. // Construction/Destruction 
  11. /*
  12. * Copyright (c) 2010,zyq5945@126.com
  13. * All rights reserved.
  14. * 文件名称:Convert.h
  15. * 文件标识:数据类型转换
  16. * 摘    要:主要简化ADO中数据类型的转换
  17. * 当前版本:1.0
  18. * 作    者:zyq5945@126.com(注意把中文字符换成英文字符)
  19. * 完成日期:2010年5月11日
  20. * 发布Blog:http://blog.csdn.net/zyq5945/
  21. *
  22. */  
  23. ////////////////////////////////////////////////////////////////////// 
  24. #define TS(value) CConvert::ToString(value) 
  25. class CConvert   
  26.      
  27. public
  28.     static CString ToString(BYTE btValue); 
  29.     static CString ToString(int iValue); 
  30.     static CString ToString(unsigned int iValue); 
  31.     static CString ToString(long lValue); 
  32.     static CString ToString(unsigned long lValue); 
  33.     static CString ToString(__int64 i64Value); 
  34.     static CString ToString(unsigned __int64 i64Value); 
  35.     static CString ToString(float fltValue); 
  36.     static CString ToString(double dblValue); 
  37.     static CString ToString(const COleDateTime& time); 
  38.     static CString ToString(const _variant_t& var); 
  39. public
  40.     static BYTE ToByte(LPCTSTR lpszValue); 
  41.     static int ToInt(LPCTSTR lpszValue); 
  42.     static unsigned int ToUInt(LPCTSTR lpszValue); 
  43.     static long ToLong(LPCTSTR lpszValue); 
  44.     static unsigned long ToULong(LPCTSTR lpszValue); 
  45.     static __int64 ToInt64(LPCTSTR lpszValue); 
  46.     static unsigned __int64 ToUInt64(LPCTSTR lpszValue); 
  47.     static float ToFloat(LPCTSTR lpszValue); 
  48.     static double ToDouble(LPCTSTR lpszValue); 
  49.     static COleDateTime ToTime(LPCTSTR lpszValue); 
  50.     static _variant_t ToVariant(const COleDateTime& time); 
  51. }; 
  52. extern CConvert Convert; 
  53. #endif // !defined(AFX_CONVERT_H__EC38F865_4607_4659_BAC8_AA6096C50EC7__INCLUDED_) 
// Convert.h: interface for the CConvert class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_CONVERT_H__EC38F865_4607_4659_BAC8_AA6096C50EC7__INCLUDED_) #define AFX_CONVERT_H__EC38F865_4607_4659_BAC8_AA6096C50EC7__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ////////////////////////////////////////////////////////////////////// // Construction/Destruction /* * Copyright (c) 2010,zyq5945@126.com * All rights reserved. * * 文件名称:Convert.h * 文件标识:数据类型转换 * 摘 要:主要简化ADO中数据类型的转换 * * 当前版本:1.0 * 作 者:zyq5945@126.com(注意把中文字符换成英文字符) * 完成日期:2010年5月11日 * 发布Blog:http://blog.csdn.net/zyq5945/ * */ ////////////////////////////////////////////////////////////////////// #define TS(value) CConvert::ToString(value) class CConvert { public: static CString ToString(BYTE btValue); static CString ToString(int iValue); static CString ToString(unsigned int iValue); static CString ToString(long lValue); static CString ToString(unsigned long lValue); static CString ToString(__int64 i64Value); static CString ToString(unsigned __int64 i64Value); static CString ToString(float fltValue); static CString ToString(double dblValue); static CString ToString(const COleDateTime& time); static CString ToString(const _variant_t& var); public: static BYTE ToByte(LPCTSTR lpszValue); static int ToInt(LPCTSTR lpszValue); static unsigned int ToUInt(LPCTSTR lpszValue); static long ToLong(LPCTSTR lpszValue); static unsigned long ToULong(LPCTSTR lpszValue); static __int64 ToInt64(LPCTSTR lpszValue); static unsigned __int64 ToUInt64(LPCTSTR lpszValue); static float ToFloat(LPCTSTR lpszValue); static double ToDouble(LPCTSTR lpszValue); static COleDateTime ToTime(LPCTSTR lpszValue); static _variant_t ToVariant(const COleDateTime& time); }; extern CConvert Convert; #endif // !defined(AFX_CONVERT_H__EC38F865_4607_4659_BAC8_AA6096C50EC7__INCLUDED_)

[cpp] view plain copy print ?
  1. // Convert.cpp: implementation of the CConvert class. 
  2. // 
  3. ////////////////////////////////////////////////////////////////////// 
  4. #include "stdafx.h" 
  5. #include "Convert.h" 
  6. #include <comutil.h> 
  7. #include <comdef.h> 
  8. #ifdef _DEBUG 
  9. #undef THIS_FILE 
  10. static char THIS_FILE[]=__FILE__; 
  11. #define new DEBUG_NEW 
  12. #endif 
  13. ////////////////////////////////////////////////////////////////////// 
  14. // Construction/Destruction 
  15. /*
  16. * Copyright (c) 2010,zyq5945@126.com
  17. * All rights reserved.
  18. * 文件名称:Convert.cpp
  19. * 文件标识:数据类型转换
  20. * 摘    要:主要简化ADO中数据类型的转换
  21. * 当前版本:1.0
  22. * 作    者:zyq5945@126.com(注意把中文字符换成英文字符)
  23. * 完成日期:2010年5月11日
  24. * 发布Blog:http://blog.csdn.net/zyq5945/
  25. *
  26. */  
  27. ////////////////////////////////////////////////////////////////////// 
  28. CConvert Convert; 
  29. CString CConvert::ToString(BYTE btValue) 
  30.     CString strValue; 
  31.     strValue.Format(_T("%d"), btValue); 
  32.     return strValue; 
  33. CString CConvert::ToString(int iValue) 
  34.     CString strValue; 
  35.     strValue.Format(_T("%d"), iValue); 
  36.     return strValue; 
  37. CString CConvert::ToString(unsigned int iValue) 
  38.     CString strValue; 
  39.     strValue.Format(_T("%u"), iValue); 
  40.     return strValue; 
  41. CString CConvert::ToString(long lValue) 
  42.     CString strValue; 
  43.     strValue.Format(_T("%d"), lValue); 
  44.     return strValue; 
  45. CString CConvert::ToString(unsigned long lValue) 
  46.     CString strValue; 
  47.     strValue.Format(_T("%u"), lValue); 
  48.     return strValue; 
  49. CString CConvert::ToString(__int64 i64Value) 
  50.     CString strValue; 
  51.     strValue.Format(_T("%I64d"), i64Value); 
  52.     return strValue; 
  53. CString CConvert::ToString(unsigned __int64 i64Value) 
  54.     CString strValue; 
  55.     strValue.Format(_T("%I64u"), i64Value); 
  56.     return strValue; 
  57. CString CConvert::ToString(float fltValue) 
  58.     CString strValue; 
  59.     strValue.Format(_T("%f"), fltValue); 
  60.     return strValue; 
  61. CString CConvert::ToString(double dblValue) 
  62.     CString strValue; 
  63.     strValue.Format(_T("%f"), dblValue); 
  64.     return strValue; 
  65. // 时间输出格式:2010-05-06 22:07:08 
  66. CString CConvert::ToString(const COleDateTime& time) 
  67.     CString strValue; 
  68.     strValue = time.Format(_T("%Y-%m-%d %H:%M:%S")); 
  69.     return strValue; 
  70. CString CConvert::ToString(const _variant_t& var) 
  71.     CString strValue; 
  72.     switch (var.vt) 
  73.     { 
  74.     case VT_BSTR: //字符串 
  75.     case VT_LPSTR: 
  76.     case VT_LPWSTR: 
  77.         strValue = (LPCTSTR)(_bstr_t)var; 
  78.         break
  79.     case VT_I1:   //无符号字符 
  80.     case VT_UI1: 
  81.         strValue.Format(_T("%d"), var.bVal); 
  82.         break
  83.     case VT_I2:   //短整型 
  84.         strValue.Format(_T("%d"), var.iVal); 
  85.         break
  86.     case VT_UI2:   //无符号短整型 
  87.         strValue.Format(_T("%u"), var.uiVal); 
  88.         break
  89.     case VT_INT: //整型 
  90.         strValue.Format(_T("%d"), var.intVal); 
  91.         break
  92.     case VT_I4:   //整型 
  93.     case VT_I8:   //长整型 
  94.         strValue.Format(_T("%d"), var.lVal); 
  95.         break
  96.     case VT_UINT:   //无符号整型 
  97.         strValue.Format(_T("%d"), var.uintVal); 
  98.         break
  99.     case VT_UI4:    //无符号整型 
  100.     case VT_UI8:    //无符号长整型 
  101.         strValue.Format(_T("%d"), var.ulVal); 
  102.         break
  103.     case VT_VOID: 
  104.         strValue.Format(_T("%08x"), var.byref); 
  105.         break
  106.     case VT_R4:   //浮点型 
  107.         strValue.Format(_T("%f"), var.fltVal); 
  108.         break
  109.     case VT_R8:   //双精度型 
  110.         strValue.Format(_T("%f"), var.dblVal); 
  111.         break
  112.     case VT_DECIMAL: //小数 
  113.         strValue.Format(_T("%f"), (double)var); 
  114.         break
  115.     case VT_CY: 
  116.         { 
  117.             COleCurrency cy = var.cyVal; 
  118.             strValue = cy.Format(); 
  119.         } 
  120.         break
  121.     case VT_BLOB: 
  122.     case VT_BLOB_OBJECT: 
  123.     case 0x2011: 
  124.         strValue = _T("[BLOB]"); 
  125.         break
  126.     case VT_BOOL:   //布尔型   
  127.         strValue = var.boolVal ? _T("TRUE") : _T("FALSE"); 
  128.         break
  129.     case VT_DATE: //日期型 
  130.         { 
  131.             DATE dt = var.date; 
  132.             COleDateTime da = COleDateTime(dt); 
  133.             strValue = da.Format(_T("%Y-%m-%d %H:%M:%S")); 
  134.         } 
  135.         break
  136.     case VT_NULL://NULL值 
  137.     case VT_EMPTY:   //空 
  138.         strValue = _T(""); 
  139.         break
  140.     case VT_UNKNOWN:   //未知类型 
  141.     default
  142.         strValue = _T("VT_UNKNOW"); 
  143.         break
  144.     } 
  145.      
  146.     return strValue; 
  147. BYTE CConvert::ToByte(LPCTSTR lpszValue) 
  148.     BYTE btValue; 
  149.     btValue = (BYTE)_ttoi(lpszValue); 
  150.     return btValue; 
  151. int CConvert::ToInt(LPCTSTR lpszValue) 
  152.     int iValue; 
  153.     iValue = _ttoi(lpszValue); 
  154.     return iValue; 
  155. unsigned int CConvert::ToUInt(LPCTSTR lpszValue) 
  156.     unsigned int iValue; 
  157.     iValue = _ttoi(lpszValue); 
  158.     return iValue; 
  159. long CConvert::ToLong(LPCTSTR lpszValue) 
  160.     long lValue; 
  161.     lValue = _ttol(lpszValue); 
  162.     return lValue; 
  163. unsigned long CConvert::ToULong(LPCTSTR lpszValue) 
  164.     unsigned long lValue; 
  165.     lValue = _ttol(lpszValue); 
  166.     return lValue; 
  167. __int64 CConvert::ToInt64(LPCTSTR lpszValue) 
  168.     __int64 i64Value; 
  169.     i64Value = _ttoi64(lpszValue); 
  170.     return i64Value; 
  171. unsigned __int64 CConvert::ToUInt64(LPCTSTR lpszValue) 
  172.     unsigned __int64 i64Value; 
  173.     i64Value = _ttoi64(lpszValue); 
  174.     return i64Value; 
  175. float CConvert::ToFloat(LPCTSTR lpszValue) 
  176.     float fltValue; 
  177. #ifdef _MBCS 
  178.     fltValue = (float)atof(lpszValue); 
  179. #else 
  180.     fltValue = (float)wtof(lpszValue); 
  181. #endif 
  182.     return fltValue; 
  183. double CConvert::ToDouble(LPCTSTR lpszValue) 
  184.     double dblValue; 
  185. #ifdef _MBCS 
  186.     dblValue = atof(lpszValue); 
  187. #else 
  188.     dblValue = wtof(lpszValue); 
  189. #endif 
  190.     return dblValue; 
  191. // 时间格式例子:2010-05-06 22:07:08 
  192. //               2010 05 06 22 07 08 
  193. //               2010:05:06 22:07:08 
  194. //               2010-05-06-22-07-08 
  195. // 只要是“- :”分割的时间格式都符合 
  196. COleDateTime CConvert::ToTime(LPCTSTR lpszValue) 
  197.     unsigned int iArray[6] = {2010, 5, 11, 12, 00, 00}; 
  198.     int nIndex = 0; 
  199. #if _MSC_VER >= 1310  //VC6.0不支持CStringAlt::Tokenize 
  200.     CString strTmp; 
  201.     int curPos = 0; 
  202.     CString strValue(lpszValue); 
  203.      
  204.     strTmp = strValue.Tokenize(_T("- :"),curPos); 
  205.     while (strTmp != _T("") && nIndex <6) 
  206.     { 
  207.         iArray[nIndex++] = ToUInt(strTmp); 
  208.         strTmp = strValue.Tokenize(_T("- :"), curPos); 
  209.     }; 
  210. #else 
  211.     TCHAR tChar[MAX_PATH] = {0}; 
  212.     TCHAR tCharTmp[MAX_PATH] = {0}; 
  213.     TCHAR seps[]   = "- :"
  214.     TCHAR *next_token = NULL; 
  215.     ASSERT(_tcslen(lpszValue) < MAX_PATH); 
  216.     RtlCopyMemory(tChar, lpszValue, _tcslen(lpszValue) * sizeof(TCHAR)); 
  217.     next_token = _tcstok(tChar, seps); 
  218.     while ( next_token != NULL && nIndex <6) 
  219.     { 
  220.         iArray[nIndex++] = _ttoi(next_token); 
  221.         next_token = _tcstok( NULL, seps); 
  222.     } 
  223.      
  224. #endif 
  225.     COleDateTime time(iArray[0], iArray[1], iArray[2], 
  226.         iArray[3], iArray[4], iArray[5]); 
  227.     return time; 
  228. _variant_t CConvert::ToVariant(const COleDateTime& time) 
  229.     _variant_t vtVal; 
  230.      
  231.     vtVal.vt = VT_DATE; 
  232.     vtVal.date = time; 
  233.     return vtVal; 
// Convert.cpp: implementation of the CConvert class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Convert.h" #include <comutil.h> #include <comdef.h> #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction /* * Copyright (c) 2010,zyq5945@126.com * All rights reserved. * * 文件名称:Convert.cpp * 文件标识:数据类型转换 * 摘 要:主要简化ADO中数据类型的转换 * * 当前版本:1.0 * 作 者:zyq5945@126.com(注意把中文字符换成英文字符) * 完成日期:2010年5月11日 * 发布Blog:http://blog.csdn.net/zyq5945/ * */ ////////////////////////////////////////////////////////////////////// CConvert Convert; CString CConvert::ToString(BYTE btValue) { CString strValue; strValue.Format(_T("%d"), btValue); return strValue; } CString CConvert::ToString(int iValue) { CString strValue; strValue.Format(_T("%d"), iValue); return strValue; } CString CConvert::ToString(unsigned int iValue) { CString strValue; strValue.Format(_T("%u"), iValue); return strValue; } CString CConvert::ToString(long lValue) { CString strValue; strValue.Format(_T("%d"), lValue); return strValue; } CString CConvert::ToString(unsigned long lValue) { CString strValue; strValue.Format(_T("%u"), lValue); return strValue; } CString CConvert::ToString(__int64 i64Value) { CString strValue; strValue.Format(_T("%I64d"), i64Value); return strValue; } CString CConvert::ToString(unsigned __int64 i64Value) { CString strValue; strValue.Format(_T("%I64u"), i64Value); return strValue; } CString CConvert::ToString(float fltValue) { CString strValue; strValue.Format(_T("%f"), fltValue); return strValue; } CString CConvert::ToString(double dblValue) { CString strValue; strValue.Format(_T("%f"), dblValue); return strValue; } // 时间输出格式:2010-05-06 22:07:08 CString CConvert::ToString(const COleDateTime& time) { CString strValue; strValue = time.Format(_T("%Y-%m-%d %H:%M:%S")); return strValue; } CString CConvert::ToString(const _variant_t& var) { CString strValue; switch (var.vt) { case VT_BSTR: //字符串 case VT_LPSTR: case VT_LPWSTR: strValue = (LPCTSTR)(_bstr_t)var; break; case VT_I1: //无符号字符 case VT_UI1: strValue.Format(_T("%d"), var.bVal); break; case VT_I2: //短整型 strValue.Format(_T("%d"), var.iVal); break; case VT_UI2: //无符号短整型 strValue.Format(_T("%u"), var.uiVal); break; case VT_INT: //整型 strValue.Format(_T("%d"), var.intVal); break; case VT_I4: //整型 case VT_I8: //长整型 strValue.Format(_T("%d"), var.lVal); break; case VT_UINT: //无符号整型 strValue.Format(_T("%d"), var.uintVal); break; case VT_UI4: //无符号整型 case VT_UI8: //无符号长整型 strValue.Format(_T("%d"), var.ulVal); break; case VT_VOID: strValue.Format(_T("%08x"), var.byref); break; case VT_R4: //浮点型 strValue.Format(_T("%f"), var.fltVal); break; case VT_R8: //双精度型 strValue.Format(_T("%f"), var.dblVal); break; case VT_DECIMAL: //小数 strValue.Format(_T("%f"), (double)var); break; case VT_CY: { COleCurrency cy = var.cyVal; strValue = cy.Format(); } break; case VT_BLOB: case VT_BLOB_OBJECT: case 0x2011: strValue = _T("[BLOB]"); break; case VT_BOOL: //布尔型 strValue = var.boolVal ? _T("TRUE") : _T("FALSE"); break; case VT_DATE: //日期型 { DATE dt = var.date; COleDateTime da = COleDateTime(dt); strValue = da.Format(_T("%Y-%m-%d %H:%M:%S")); } break; case VT_NULL://NULL值 case VT_EMPTY: //空 strValue = _T(""); break; case VT_UNKNOWN: //未知类型 default: strValue = _T("VT_UNKNOW"); break; } return strValue; } BYTE CConvert::ToByte(LPCTSTR lpszValue) { BYTE btValue; btValue = (BYTE)_ttoi(lpszValue); return btValue; } int CConvert::ToInt(LPCTSTR lpszValue) { int iValue; iValue = _ttoi(lpszValue); return iValue; } unsigned int CConvert::ToUInt(LPCTSTR lpszValue) { unsigned int iValue; iValue = _ttoi(lpszValue); return iValue; } long CConvert::ToLong(LPCTSTR lpszValue) { long lValue; lValue = _ttol(lpszValue); return lValue; } unsigned long CConvert::ToULong(LPCTSTR lpszValue) { unsigned long lValue; lValue = _ttol(lpszValue); return lValue; } __int64 CConvert::ToInt64(LPCTSTR lpszValue) { __int64 i64Value; i64Value = _ttoi64(lpszValue); return i64Value; } unsigned __int64 CConvert::ToUInt64(LPCTSTR lpszValue) { unsigned __int64 i64Value; i64Value = _ttoi64(lpszValue); return i64Value; } float CConvert::ToFloat(LPCTSTR lpszValue) { float fltValue; #ifdef _MBCS fltValue = (float)atof(lpszValue); #else fltValue = (float)wtof(lpszValue); #endif return fltValue; } double CConvert::ToDouble(LPCTSTR lpszValue) { double dblValue; #ifdef _MBCS dblValue = atof(lpszValue); #else dblValue = wtof(lpszValue); #endif return dblValue; } // 时间格式例子:2010-05-06 22:07:08 // 2010 05 06 22 07 08 // 2010:05:06 22:07:08 // 2010-05-06-22-07-08 // 只要是“- :”分割的时间格式都符合 COleDateTime CConvert::ToTime(LPCTSTR lpszValue) { unsigned int iArray[6] = {2010, 5, 11, 12, 00, 00}; int nIndex = 0; #if _MSC_VER >= 1310 //VC6.0不支持CStringAlt::Tokenize CString strTmp; int curPos = 0; CString strValue(lpszValue); strTmp = strValue.Tokenize(_T("- :"),curPos); while (strTmp != _T("") && nIndex <6) { iArray[nIndex++] = ToUInt(strTmp); strTmp = strValue.Tokenize(_T("- :"), curPos); }; #else TCHAR tChar[MAX_PATH] = {0}; TCHAR tCharTmp[MAX_PATH] = {0}; TCHAR seps[] = "- :"; TCHAR *next_token = NULL; ASSERT(_tcslen(lpszValue) < MAX_PATH); RtlCopyMemory(tChar, lpszValue, _tcslen(lpszValue) * sizeof(TCHAR)); next_token = _tcstok(tChar, seps); while ( next_token != NULL && nIndex <6) { iArray[nIndex++] = _ttoi(next_token); next_token = _tcstok( NULL, seps); } #endif COleDateTime time(iArray[0], iArray[1], iArray[2], iArray[3], iArray[4], iArray[5]); return time; } _variant_t CConvert::ToVariant(const COleDateTime& time) { _variant_t vtVal; vtVal.vt = VT_DATE; vtVal.date = time; return vtVal; }

由于_variant_t重载了以下等号运算符,所以下面类型可以直接给_variant_t赋值

[cpp] view plain copy print ?
  1. VARIANT  
  2. VARIANT*  
  3. _variant_t 
  4. short  
  5. long 
  6. float 
  7. double 
  8. CY 
  9. _bstr_t 
  10. wchar_t 
  11. char 
  12. IDispatch* 
  13. bool 
  14. IUnknown* 
  15. DECIMAL 
  16. BYTE 
  17. char 
  18. unsigned short 
  19. unsigned long 
  20. int 
  21. unsigned int 
  22. __int64 
  23. unsigned __int64 
VARIANT VARIANT* _variant_t short long float double CY _bstr_t wchar_t char IDispatch* bool IUnknown* DECIMAL BYTE char unsigned short unsigned long int unsigned int __int64 unsigned __int64

由于COleDateTime重载了以下等号运算符,所以下面类型可以直接给COleDateTime赋值

[cpp] view plain copy print ?
  1. VARIANT 
  2. DATE 
  3. time_t 
  4. __time64_t 
  5. SYSTEMTIME 
  6. FILETIME 
  7. UDATE 
VARIANT DATE time_t __time64_t SYSTEMTIME FILETIME UDATE

本例中CConvert类也增加了一个ToVariant函数把COleDateTime转换为_variant_t类型变量

[cpp] view plain copy print ?
  1. _variant_t varValue; 
  2. CString strValue; 
  3. COleDateTime dt; 
  4. try 
  5.     // 写入各字段值 
  6.     m_pRecordset->AddNew(); 
  7.     // byte变量 
  8.     GetDlgItemText(IDC_EDIT1, strValue); 
  9.     varValue = CConvert::ToByte(strValue);   
  10.     m_pRecordset->PutCollect("tByte", varValue); 
  11.      
  12.     // int变量 
  13.     GetDlgItemText(IDC_EDIT2, strValue); 
  14.     varValue = (long)CConvert::ToInt(strValue);  
  15.     m_pRecordset->PutCollect("tInt", varValue); 
  16.     // long变量 
  17.     GetDlgItemText(IDC_EDIT3, strValue); 
  18.     varValue = CConvert::ToLong(strValue);   
  19.     m_pRecordset->PutCollect("tLong", varValue); 
  20.     // float变量 
  21.     GetDlgItemText(IDC_EDIT4, strValue); 
  22.     varValue = CConvert::ToFloat(strValue);  
  23.     m_pRecordset->PutCollect("tFloat", varValue); 
  24.     // double变量 
  25.     GetDlgItemText(IDC_EDIT5, strValue); 
  26.     varValue = CConvert::ToDouble(strValue);     
  27.     m_pRecordset->PutCollect("tDouble", varValue); 
  28.     // COleDateTime变量 
  29.     GetDlgItemText(IDC_EDIT6, strValue); 
  30.     dt = CConvert::ToTime(strValue); 
  31.     varValue = CConvert::ToVariant(dt); 
  32.     m_pRecordset->PutCollect("tTime", varValue); 
  33.     // bool变量 
  34.     GetDlgItemText(IDC_EDIT7, strValue); 
  35.     if (!strValue.CompareNoCase("TRUE")) 
  36.     { 
  37.         varValue = true
  38.     } 
  39.     else 
  40.     { 
  41.         varValue = false
  42.     } 
  43.     m_pRecordset->PutCollect("tBool", varValue); 
  44.     // 字符串变量 
  45.     GetDlgItemText(IDC_EDIT8, strValue); 
  46.     varValue = strValue; 
  47.     m_pRecordset->PutCollect("tText", varValue); 
  48.     m_pRecordset->Update(); 
  49.      
  50.     // 更新显示其库内容 
  51.     int nCurSel = m_list.GetItemCount(); 
  52.     ADOListRecord(); 
  53.     SetListSel(nCurSel); 
  54.  
  55.     AfxMessageBox("插入成功!"); 
  56. catch(_com_error& e) 
  57.     dump_com_error(e); 

你可能感兴趣的:(Date,null,token,float,byte,2010)