将Access表里的数据追加到SQL表里,怎么SQL表自增列有关问题


将Access表里的数据追加到SQL表里,如何SQL表自增列问题

  C/C++ code

   sql_1 = "SELECT * FROM Access表;"; // Access表里没有自增列 OpenQuery(adoquery_2, sql_1); // 封装的执行并Open ADOQuery的函数 sql_1 = "alter table [mc_dosage_1] drop column ID ; alter table [mc_dosage_1] add ID int identity(1,1)" ; // 本想先删除自增字段再加入,但是由于ID为主键不能执行 SQLEXEC(adoquery_1, sql_1);// 这里是封装的执行SQL语句的函数 int DBSetCount = 0; while(!adoquery_2->Eof) { sql_1 = "SELECT * FROM SQL表 WHERE [drugId] = " + adoquery_2->FieldList->FieldByName("drugId")->AsString; // SELECT * 找不到SQL表中的自增列“ID” DBSetCount = OpenQuery(adoquery_1, sql_1); if(DBSetCount > 0) adoquery_1->Edit(); // SQL表中存在与Access表中[drugId]相同的记录,修改记录 else adoquery_1->Append(); // 否则,追加记录 for(int i=0; i<adoquery_2->FieldCount; i++) { AnsiString iFieldName = adoquery_2->FieldList->Fields[i]->FieldName; // 这里adoquery_2->FieldList->Fields[0]->FieldName=“drugId”而非“ID”,Why? if(adoquery_1->FindField(iFieldName) != NULL) adoquery_1->FieldByName(iFieldName)->Value = adoquery_2->FieldByName(iFieldName)->Value; } adoquery_1->Post(); adoquery_2->Next(); }


我是用以上语句来将Access表里的数据追加到SQL表中的,但是由于两个标的结构有细微的差异,所以先判断在SQL表中是否存在相应的字段,存在则将该字段的值改写为Acces表对应字段值,不存在则跳过该字段继续寻找下一字段,如此反复,直到Access表中的字段都比较完毕,更新该条记录,就是自增列搞不定啊,谢谢了。。。

基本概念 C++/VC 程序开发

放开那只兄贵 12 years, 3 months ago


喊叫几声

hirano answered 12 years, 3 months ago


我给你喉以嗓子,呵呵

爨冏雠蠡鬯蕤 answered 12 years, 3 months ago

Your Answer