我现在由于程序增加了一些功能,所以数据库表结构改变了,增加了一些字段,需要导入以前的老数据,导入数据我已经解决了,但如果新数据库表里面关键字有重复的话就会出错,怎么判断关键字的重复,还有这个字段是否存在?
如表InvData 结构是Inv_ID,Inv_Type,........
程序里Table8是关联的老数据库,Query8是关联的新数据库导入数据程序
//---------------------InvData-------------------------//
Table8.Active;
Table8.Open;
Table8.Append;
Query8.Active;
Query8.Open;
totalnum := Query8.RecordCount;
for i:=0 to totalnum-1 do
begin
Table8.Insert;
if (Query8.FieldValues['Inv_ID'] <> null) then
Table8.FieldByName('Inv_ID').AsString:=Query8.FieldValues['Inv_ID'];
if (Query8.FieldValues['Inv_Type'] <> null) then
Table8.FieldByName('Inv_Type').AsFloat:=Query8.FieldValues['Inv_Type'];
if (Query8.FieldValues['Inv_State'] <> null) then
Table8.FieldByName('Inv_State').AsFloat:=Query8.FieldValues['Inv_State'];
if (Query8.FieldValues['Inv_TaxID'] <> null) then
Table8.FieldByName('Inv_TaxID').AsString:=Query8.FieldValues['Inv_TaxID'];
if (Query8.FieldValues['Inv_Date'] <> null) then
Table8.FieldByName('Inv_Date').AsString:=Query8.FieldValues['Inv_Date'];
if (Query8.FieldValues['Inv_Currency'] <> null) then
Table8.FieldByName('Inv_Currency').AsCurrency:=Query8.FieldValues['Inv_Currency'];
if (Query8.FieldValues['Inv_Owner'] <> null) then
Table8.FieldByName('Inv_Owner').AsString:=Query8.FieldValues['Inv_Owner'];
if (Query8.FieldValues['Inv_Operator'] <> null) then
Table8.FieldByName('Inv_Operator').AsString:=Query8.FieldValues['Inv_Operator'];
if (Query8.FieldValues['Inv_Memo'] <> null) then
Table8.FieldByName('Inv_Memo').AsString:=Query8.FieldValues['Inv_Memo'];
Table8.UpdateRecord;
Table8.Next;
Query8.Next;
end;各位帮帮忙,如果能更稳定的导入数据。
如表InvData 结构是Inv_ID,Inv_Type,........
程序里Table8是关联的老数据库,Query8是关联的新数据库导入数据程序
//---------------------InvData-------------------------//
Table8.Active;
Table8.Open;
Table8.Append;
Query8.Active;
Query8.Open;
totalnum := Query8.RecordCount;
for i:=0 to totalnum-1 do
begin
Table8.Insert;
if (Query8.FieldValues['Inv_ID'] <> null) then
Table8.FieldByName('Inv_ID').AsString:=Query8.FieldValues['Inv_ID'];
if (Query8.FieldValues['Inv_Type'] <> null) then
Table8.FieldByName('Inv_Type').AsFloat:=Query8.FieldValues['Inv_Type'];
if (Query8.FieldValues['Inv_State'] <> null) then
Table8.FieldByName('Inv_State').AsFloat:=Query8.FieldValues['Inv_State'];
if (Query8.FieldValues['Inv_TaxID'] <> null) then
Table8.FieldByName('Inv_TaxID').AsString:=Query8.FieldValues['Inv_TaxID'];
if (Query8.FieldValues['Inv_Date'] <> null) then
Table8.FieldByName('Inv_Date').AsString:=Query8.FieldValues['Inv_Date'];
if (Query8.FieldValues['Inv_Currency'] <> null) then
Table8.FieldByName('Inv_Currency').AsCurrency:=Query8.FieldValues['Inv_Currency'];
if (Query8.FieldValues['Inv_Owner'] <> null) then
Table8.FieldByName('Inv_Owner').AsString:=Query8.FieldValues['Inv_Owner'];
if (Query8.FieldValues['Inv_Operator'] <> null) then
Table8.FieldByName('Inv_Operator').AsString:=Query8.FieldValues['Inv_Operator'];
if (Query8.FieldValues['Inv_Memo'] <> null) then
Table8.FieldByName('Inv_Memo').AsString:=Query8.FieldValues['Inv_Memo'];
Table8.UpdateRecord;
Table8.Next;
Query8.Next;
end;各位帮帮忙,如果能更稳定的导入数据。
解决方案 »
- delphi中的DBgrid点击数据后老是自动跳到第一行?
- Timage中能装载多个图片?他的Canvas属性一般怎么用?
- 怎么引用消息队列的控件?
- 修改delphi 内部VCL,怎么编译,各位大侠帮忙,高分送100
- 有没有api函数可以读AX BX CX DX 寄存器!
- 想把dbgrid的数据保存成txt或excel文件,有什么好的控件实现吗?
- 【遇到的第一次打击,居然是小小的空文件夹】
- 关于Delphi7显示其他语种问题
- 帮帮菜鸟,为什么关闭程序老是报错
- Delphi5 + MSSQL7 中的计数问题?
- Excel数据导入数据库的问题?高分求救!
- 关于AVI播放的问题(使用AVIStreamGetFrame)请各位图像处理高手看看
begin
Table8.Insert;
if (Query8.FieldValues['Inv_ID'] <> null) and (Query8.Fields.Fields[0].FieldName = 'Inv_ID') then
Table8.FieldByName('Inv_ID').AsString:=Query8.FieldValues['Inv_ID'];谢谢,已解决!