将Access表里的数据追加到SQL表里,如何SQL表自增列问题
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(); }