vc中对access编程,如何在插入一条数据后,得到他的ID?
vc中对access编程,
现在用insert插入一条数据,并想同时返回他的id,
如果单纯执行语句用ExecuteSQL,
如果返回记录集用OpenRecord,
现在又要执行语句,又要返回一个ID,
应该怎么在vc中写代码?
问题点数:90、回复次数:12Top
1 楼laiyiling(陌生人[MVP])回复于 2005-06-02 08:30:00 得分 10
如何在表中新插入新记录后,获取该记录自动编号字段的值?
http://www.access911.net/fixhtm/71FAB21E16DC.htmTop
2 楼sql_fly(微软)回复于 2005-06-02 08:35:10 得分 0
楼上的连接不是我想要的,
我想知道的是如何在vc中得到那个id
也就是说vc的代码应该怎么写?Top
3 楼laiyiling(陌生人[MVP])回复于 2005-06-02 08:45:20 得分 0
4 楼sql_fly(微软)回复于 2005-06-02 08:52:51 得分 0
?空白?Top
5 楼bohut(●伯虎● )回复于 2005-06-02 08:58:37 得分 30
写一个“存储过程”,在“存储过程”中insert新记录,并且返回id
vc调用该存储过程。Top
6 楼sql_fly(微软)回复于 2005-06-02 09:03:28 得分 0
access里面没有存储过程Top
7 楼bohut(●伯虎● )回复于 2005-06-02 09:15:09 得分 0
http://efly.nenu.edu.cn/study/ReadNews.asp?NewsID=4111
在access中使用“存储过程”Top
8 楼mahatma_cn(研究硕士生)回复于 2005-06-02 09:41:37 得分 0
DAO?不知道dao执行sql命令时会不会返回受影响的记录集,好像ado可以!Top
9 楼sql_fly(微软)回复于 2005-06-02 09:51:47 得分 0
DAO?不知道dao执行sql命令时会不会返回受影响的记录集,好像ado可以!
---什么意思,对我的题目有什么启示?
---我用的是adoTop
10 楼cuiyu616ok(大宇)回复于 2005-06-02 11:48:08 得分 50
我也遇到了同样的问题帮助你顶Top
11 楼cuiyu616ok(大宇)回复于 2005-06-02 11:49:26 得分 0
CString cstrDT = dtCurrDT.Format(VAR_DATEVALUEONLY) +" "+ dtCurrDT.Format(VAR_TIMEVALUEONLY);
//Add new exam to DB
_RecordsetPtr m_pNewExamRecordset;
m_pNewExamRecordset.CreateInstance(__uuidof(Recordset));
m_pNewExamRecordset->CursorLocation = adUseClient;
m_pNewExamRecordset->CursorType = adOpenStatic;
m_pNewExamRecordset->LockType = adLockOptimistic;
_CommandPtr pCommand;
pCommand.CreateInstance(__uuidof(Command));
try
{
char cPID[10];
itoa(iPatientID,cPID,10);
CString cstrSql = "Insert into tblExamination(PatientID, ";
cstrSql += "ExamDate,Description,SequenceName) values ('" ;
cstrSql += (CString)cPID + "','";
cstrSql += cstrDT +"','";
cstrSql += cstrExamDescription +"','";
cstrSql += cstrTNTDescription +"')";
pCommand->ActiveConnection = theApp.m_pConnection ;
pCommand->CommandText = cstrSql.AllocSysString();
pCommand->Execute(NULL,NULL,adCmdText);
_variant_t var;
CString sql = "select @@IDENTITY AS 'newID'";
m_pNewExamRecordset->Open((_variant_t)sql,
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
m_pNewExamRecordset->MoveFirst();
if (!m_pNewExamRecordset->adoEOF)
{
var = m_pNewExamRecordset->GetCollect("newID");
if(var.vt != VT_NULL)
int uiExamID = var.iVal;
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
pCommand.Release();
}
================
以上是我的语句但是执行到var = m_pNewExamRecordset->GetCollect("newID");
这句就出错.Top
12 楼cuiyu616ok(大宇)回复于 2005-06-02 13:21:45 得分 0
CString sql = "select @@IDENTITY AS 'newID'";
把这句改为CString sql = "select @@IDENTITY AS newID";
这样就可以了,我也刚刚解决.
Top




