Memo/2004-04-21
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
*その他
**ミリネジとインチネジ
-ミリネジ (metric screw threads)
--http://www.atmarkit.co.jp/icd/root/49/20463549.html
=1山あたり0.5mm
-インチネジ (inch screw threads)
--http://www.atmarkit.co.jp/icd/root/63/27317663.html
=1山あたり0.8mm(インチあたり32山)
*Visual C++ 関連情報
**ADOレコードセットを配列として使う方法
#code c++
#include <afx.h>
#include <comdef.h>
#import "C:\Program Files\Common Files\System\Ado\msado1...
using namespace ADODB; // 名前空間
#include <afxdisp.h> // COleSafeArray
#include <afxtempl.h> // CArray
typedef CArray< _variant_t, _variant_t& > CVariantArray;
// _variant_t の配列を取り扱うためのヘルパークラス
class CSafeVariantArray : public CVariantArray
{
public:
operator LPVARIANT()
{
VariantArrayToSafeArray();
return (LPVARIANT)m_sa;
}
private:
void VariantArrayToSafeArray()
{
COleSafeArray sa;
int nSize = GetSize();
sa.CreateOneDim( VT_VARIANT, nSize );
for ( int i = 0; i < nSize; i++ )
{
long lArrayIndex = (long)i;
_variant_t vValue = GetAt(i);
sa.PutElement( &lArrayIndex, &vValue );
}
m_sa = sa;
return;
}
COleSafeArray m_sa;
};
/*
Sub FieldsAppendTest
Dim rsTmp
Set rsTmp = CreateObject("ADODB.Recordset")
With rsTmp.Fields
.Append "Field1", adVarChar, 80, adFldIsNullable
.Append "Field2", adVarChar, 80, adFldIsNullable
End With
rsTmp.Open
Dim vFieldList
vFieldList = Array( "Field1", "Field2" )
Dim vValues
vValues = Array( "aaa", "bbb" )
rsTmp.AddNew vFieldList, vValues
vValues = Array( "CCC", "DDD" )
rsTmp.AddNew vFieldList, vValues
rsTmp.MoveFirst
Dim fld
Dim strLine
Dim strName
strLine = ""
For Each fld In rsTmp.Fields
strName = fld.Name
strLine = strLine & strName & vbTab
Next
WScript.Echo strLine
Dim strValue
While Not rsTmp.BOF And Not rsTmp.EOF
strLine = ""
For Each fld In rsTmp.Fields
strValue = fld.Value
strLine = strLine & "[" & strValue & "]" & vb...
Next
WScript.Echo strLine
rsTmp.MoveNext
Wend
End Sub
*/
void FieldsAppendTest()
{
try
{
CoInitialize(NULL);
ADODB::_RecordsetPtr rs; // Recordsetオブジェクト
// ADOオブジェクトの生成
rs.CreateInstance( __uuidof(ADODB::Recordset) );
rs->Fields->Append( L"Field1", adVarChar, 80, adFldIsNu...
rs->Fields->Append( L"Field2", adVarChar, 80, adFldIsNu...
rs->Open( vtMissing, vtMissing, adOpenForwardOnly, adLo...
// テーブルのフィールドリスト用の配列を作成します
CSafeVariantArray vaFieldList;
vaFieldList.Add( _variant_t( L"Field1" ) );
vaFieldList.Add( _variant_t( L"Field2" ) );
CSafeVariantArray vaValues;
vaValues.Add( _variant_t( L"aaa" ) );
vaValues.Add( _variant_t( L"bbb" ) );
// 1レコード目
rs->AddNew( (LPVARIANT)vaFieldList, (LPVARIANT)vaValues...
vaValues.RemoveAll();
vaValues.Add( _variant_t( L"CCC" ) );
vaValues.Add( _variant_t( L"DDD" ) );
// 2レコード目
rs->AddNew( (LPVARIANT)vaFieldList, (LPVARIANT)vaValues...
rs->MoveFirst();
long i = 0;
long nFields = rs->GetFields()->GetCount();
// 項目名
for ( i = 0; i < nFields; i++ )
{
_bstr_t vName;
_variant_t vValue;
vName = rs->GetFields()->GetItem(i)->GetName();
_tprintf( _T("%s\t"), (LPCTSTR)vName );
}
_tprintf( _T("\n") );
_tprintf( _T("-----------------------------------------...
// レコード表示
while ( !rs->GetBOF() && !rs->GetadoEOF() )
{
for ( i = 0; i < nFields; i++ )
{
_variant_t vValue;
vValue = rs->GetFields()->GetItem(i)->GetValue();
_tprintf( _T("[%s]\t"), (LPCTSTR)(_bstr_t)vValue );
}
_tprintf( _T("\n") );
rs->MoveNext();
}
rs->Close();
}
catch ( _com_error& e )
{
_tprintf( _T("e.Description = [%s]\n"), (LPCTSTR)e.Desc...
return;
}
catch ( ... )
{
_tprintf( _T("Fatal Error!\n") );
return;
}
CoUninitialize();
}
int main( int argc, char* argv[] )
{
FieldsAppendTest();
return 0;
}
#end
--文字列の配列として COleSafeArray を使うのが味噌らしい。
***参考情報
-[mfc 38197] データベース上への追加
--http://search.acty-net.ne.jp/mfc_search/archive/2002-1/...
終了行:
*その他
**ミリネジとインチネジ
-ミリネジ (metric screw threads)
--http://www.atmarkit.co.jp/icd/root/49/20463549.html
=1山あたり0.5mm
-インチネジ (inch screw threads)
--http://www.atmarkit.co.jp/icd/root/63/27317663.html
=1山あたり0.8mm(インチあたり32山)
*Visual C++ 関連情報
**ADOレコードセットを配列として使う方法
#code c++
#include <afx.h>
#include <comdef.h>
#import "C:\Program Files\Common Files\System\Ado\msado1...
using namespace ADODB; // 名前空間
#include <afxdisp.h> // COleSafeArray
#include <afxtempl.h> // CArray
typedef CArray< _variant_t, _variant_t& > CVariantArray;
// _variant_t の配列を取り扱うためのヘルパークラス
class CSafeVariantArray : public CVariantArray
{
public:
operator LPVARIANT()
{
VariantArrayToSafeArray();
return (LPVARIANT)m_sa;
}
private:
void VariantArrayToSafeArray()
{
COleSafeArray sa;
int nSize = GetSize();
sa.CreateOneDim( VT_VARIANT, nSize );
for ( int i = 0; i < nSize; i++ )
{
long lArrayIndex = (long)i;
_variant_t vValue = GetAt(i);
sa.PutElement( &lArrayIndex, &vValue );
}
m_sa = sa;
return;
}
COleSafeArray m_sa;
};
/*
Sub FieldsAppendTest
Dim rsTmp
Set rsTmp = CreateObject("ADODB.Recordset")
With rsTmp.Fields
.Append "Field1", adVarChar, 80, adFldIsNullable
.Append "Field2", adVarChar, 80, adFldIsNullable
End With
rsTmp.Open
Dim vFieldList
vFieldList = Array( "Field1", "Field2" )
Dim vValues
vValues = Array( "aaa", "bbb" )
rsTmp.AddNew vFieldList, vValues
vValues = Array( "CCC", "DDD" )
rsTmp.AddNew vFieldList, vValues
rsTmp.MoveFirst
Dim fld
Dim strLine
Dim strName
strLine = ""
For Each fld In rsTmp.Fields
strName = fld.Name
strLine = strLine & strName & vbTab
Next
WScript.Echo strLine
Dim strValue
While Not rsTmp.BOF And Not rsTmp.EOF
strLine = ""
For Each fld In rsTmp.Fields
strValue = fld.Value
strLine = strLine & "[" & strValue & "]" & vb...
Next
WScript.Echo strLine
rsTmp.MoveNext
Wend
End Sub
*/
void FieldsAppendTest()
{
try
{
CoInitialize(NULL);
ADODB::_RecordsetPtr rs; // Recordsetオブジェクト
// ADOオブジェクトの生成
rs.CreateInstance( __uuidof(ADODB::Recordset) );
rs->Fields->Append( L"Field1", adVarChar, 80, adFldIsNu...
rs->Fields->Append( L"Field2", adVarChar, 80, adFldIsNu...
rs->Open( vtMissing, vtMissing, adOpenForwardOnly, adLo...
// テーブルのフィールドリスト用の配列を作成します
CSafeVariantArray vaFieldList;
vaFieldList.Add( _variant_t( L"Field1" ) );
vaFieldList.Add( _variant_t( L"Field2" ) );
CSafeVariantArray vaValues;
vaValues.Add( _variant_t( L"aaa" ) );
vaValues.Add( _variant_t( L"bbb" ) );
// 1レコード目
rs->AddNew( (LPVARIANT)vaFieldList, (LPVARIANT)vaValues...
vaValues.RemoveAll();
vaValues.Add( _variant_t( L"CCC" ) );
vaValues.Add( _variant_t( L"DDD" ) );
// 2レコード目
rs->AddNew( (LPVARIANT)vaFieldList, (LPVARIANT)vaValues...
rs->MoveFirst();
long i = 0;
long nFields = rs->GetFields()->GetCount();
// 項目名
for ( i = 0; i < nFields; i++ )
{
_bstr_t vName;
_variant_t vValue;
vName = rs->GetFields()->GetItem(i)->GetName();
_tprintf( _T("%s\t"), (LPCTSTR)vName );
}
_tprintf( _T("\n") );
_tprintf( _T("-----------------------------------------...
// レコード表示
while ( !rs->GetBOF() && !rs->GetadoEOF() )
{
for ( i = 0; i < nFields; i++ )
{
_variant_t vValue;
vValue = rs->GetFields()->GetItem(i)->GetValue();
_tprintf( _T("[%s]\t"), (LPCTSTR)(_bstr_t)vValue );
}
_tprintf( _T("\n") );
rs->MoveNext();
}
rs->Close();
}
catch ( _com_error& e )
{
_tprintf( _T("e.Description = [%s]\n"), (LPCTSTR)e.Desc...
return;
}
catch ( ... )
{
_tprintf( _T("Fatal Error!\n") );
return;
}
CoUninitialize();
}
int main( int argc, char* argv[] )
{
FieldsAppendTest();
return 0;
}
#end
--文字列の配列として COleSafeArray を使うのが味噌らしい。
***参考情報
-[mfc 38197] データベース上への追加
--http://search.acty-net.ne.jp/mfc_search/archive/2002-1/...
ページ名: