我要从把excel中的数据倒入到access中但是有些特殊的罗马数字在access中就会显示为空  请问这个问题如何解决

解决方案 »

  1.   

    procedure TForm1.Button4Click(Sender: TObject);
    var
    str1,str2,str3:string;
    Function  Jisuan(): string;
    label a;
    begin
       str3:=ADOQuery1.fieldbyname('归位深度').AsString ;   //初始化
    a: str1:=ADOQuery2.fieldbyname('F4').AsString;
       str2:=ADOQuery2.fieldbyname('F2').AsString;
     if (str1 <> '') and (str2 <> '') then
            begin   //都不为空           if (strtofloat(str3)>=strtofloat(str2)) and (strtofloat(str3)<=strtofloat(str1))  then
                   begin
                  //showmessage('找到了');
                     adoquery1.Edit;
                     adoquery1.FieldByName('层号').AsString:=ADOQuery2.Fields[0].Text;
                     adoquery1.FieldByName('井段').AsString:=str2+'~'+str1;
                   end
               else
                  begin
                   //showmessage('没有合适的');
                     with ADOQuery2 Do
                            begin
                                next;
                              if EOF then
                                showmessage('这条数据有误,请手动修改吧!')
                              else goto a;
                            end;               end;        end
     else      //有空的情况
       begin
          //showmessage('有空的!');
          with ADOQuery2 Do
              begin
                  next;
                if EOF then
                    showmessage('这条数据有误,请手动核实!')
                else
                  begin
                    goto  a;
                  end;
              end;   end;end;
     begin with ADOQuery1 Do        begin           First; //将记录指针指向第一条记录
               while not EOF do
                   begin
                        Jisuan();
                        next; //修改下一条记录
                        with adoquery2 do
                            begin
                               first;
                            end;               end;
            end;end;
      

  2.   

    程序中adoquery1.FieldByName('层号').AsString:=ADOQuery2.Fields[0].Text;   出现问题excel中的第一列中有特殊字符  在access中识别不出来
      

  3.   


    adoquery1.FieldByName('层号').AsString:=WideString(ADOQuery2.Fields[0].Text);
      

  4.   


    [code=Delphi(Pascal)]
    var
    ws:WideString;ws:=ADOQuery2.Fields[0].Text;
    adoquery1.FieldByName('层号').AsString:=string(ws);/code]
      

  5.   

    这个问题以前我碰到过.............
    要先设置EXCEL里的格式.以前我是在代码中设置的.现在不记得了.
    不过我记得是调用EXCEL的ASC函数把所有列转换一下就OK了.
      

  6.   

    例如:EXCEL表的F这个数据列含有特殊的符号,要将其转为文本型,只存表格一次:uses ComObj;{--------------需引用的单元}procedure TForm1.Button2Click(Sender: TObject);
    var
    v:Variant;
    begin
     if OpenDialog1.Execute then begin
      v := CreateOleObject( 'Excel.Application' );
      v.WorkBooks.Open(OpenDialog1.FileName);
      v.ActiveSheet.Range[ 'F:F' ].select;{---选择整列---}
      v.Selection.NumberFormatLocal:='@';{---设定格式为文本--}
      v.ActiveWorkbook.Save;
      v.ActiveWorkbook.close;
      v.quit;
     end;
    end;