Latest News

the latest news from our team

Using Data Access – From VC++ with Arrays

The MDMDA session object is being called from a Microsoft VC++ application. This sample includes references to an item array (12J1).

The dataset and items are defined as follows:

ITEMS:
ITEM-NO, Z6;
SALES-PERIODS, 12X6;
SALES-HISTORY, 12P12;
MISC, 12J1;
OTHER, J2;SETS:
NAME: HISTORY, DETAIL (1/18);
ENTRY: ITEM-NO(!HISTORY-M),
SALES-PERIODS,
SALES-HISTORY,
MISC,
OTHER;
CAPACITY: 101;
END.

mdm_004

BOOL CVc01Dlg::OnInitDialog()
{
char buf[20];
BOOL b1;
COleException pError;CDialog::OnInitDialog();SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);

da = new IMdmdaDoc();
b1 = da->CreateDispatch ( "MdmDA.Session", &pError );
if ( !b1 ) {
sprintf ( buf, "Session error: [x%08X]\0", pError.m_sc );
AfxMessageBox ( buf );
return TRUE;
};
da->SetTraceLevel ( 0 );
da->SetHostAddress ( "support.minisoft.com\0" );
da->SetPort ( 30002 );
da->SetLoginUser ( "MGR" );
da->SetLoginGroup ( "UTIL" );
da->SetLoginAccount ( "MINISOFT" );
da->SetUserPassword ( "abcdef" );
if ( !da->Connect() ) {
AfxMessageBox("couldn't connect...");
return TRUE;
};
if ( !da->GetLoginStatus()) {
AfxMessageBox("Login failed...");
return TRUE;
};
db = new IImageDatabase();
ds = new IImageDataset();
db->AttachDispatch(da->AddImageDBRef("MSCARD"),true);
ds->AttachDispatch(db->AddDatasetRef("HISTORY"),true);
if ( !db->Open("MSCARD", "UTIL", "MINISOFT", 1, "DO-ALL") ) {
AfxMessageBox("Open failed...");
return TRUE;
};
ds->SetDelimiter ("\0");
if ( !ds->ReadSerialNext("@;") ) {
AfxMessageBox("ReadSerialNext failed...");
return TRUE;
};
SetItemValues();

return TRUE;
}

void CVc01Dlg::OnDestroy()
{
CDialog::OnDestroy();

if ( ds ) {
ds->ReleaseDispatch();
delete ds;
}
if ( db ) {
db->ReleaseDispatch();
delete db;
}
if ( da ) {
da->ReleaseDispatch();
delete da;
}
}

void CVc01Dlg::SetItemValues()
{
CString buf;
char buf2[10];

m_Edit1.SetWindowText(ds->GetItem("ITEM-NO"));
buf = ds->GetItem("MISC");
m_Edit2.SetWindowText(buf);

sprintf ( buf2, "%d", atoi ( buf.Mid( 0, 6 ) ) );
m_misc_1.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 6, 6 ) ) );
m_misc_2.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 12, 6 ) ) );
m_misc_3.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 18, 6 ) ) );
m_misc_4.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 24, 6 ) ) );
m_misc_5.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 30, 6 ) ) );
m_misc_6.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 36, 6 ) ) );
m_misc_7.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 42, 6 ) ) );
m_misc_8.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 48, 6 ) ) );
m_misc_9.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 54, 6 ) ) );
m_misc_10.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 60, 6 ) ) );
m_misc_11.SetWindowText ( buf2 );
sprintf ( buf2, "%d", atoi ( buf.Mid( 66, 6 ) ) );
m_misc_12.SetWindowText ( buf2 );

}

void CVc01Dlg::GetItemValues()
{
CString buf;
CString buf2;
char buf3[10];

m_misc_1.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf = buf3;
m_misc_2.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_3.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_4.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_5.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_6.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_7.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_8.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_9.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_10.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_11.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;
m_misc_12.GetWindowText ( buf2 );
sprintf ( buf3, "%6d", atoi ( buf2 ) );
buf += buf3;

m_Edit2.SetWindowText(buf);
ds->SetItem("MISC",buf);
m_Edit1.GetWindowText(buf2);
ds->SetItem("ITEM-NO",buf2);

}

void CVc01Dlg::OnNext()
{
if ( !ds->ReadSerialNext("@;") ) {
AfxMessageBox("ReadSerialNextfailed...");
return;
};

SetItemValues();

return;
}

void CVc01Dlg::OnRewind()
{
if ( !ds->Rewind() ) {
AfxMessageBox("Rewind failed...");
return;
};
}

void CVc01Dlg::OnAdd()
{
GetItemValues();

if ( !ds->Write("@;") ) {
AfxMessageBox("Write failed...");
return;
};

return;

Leave a Reply

Your email address will not be published. Required fields are marked *