先select,再把查到的记录写到文件里,下面是代码,在MYSQL5.x通过了,但在MYSQL3.x上用就是通不过,提示“多步操作产生错误 请检查每一步的操作值”
with ADOQuery2 do
      begin
        Close;
        SQL.Clear;
        SQL.Text:='select * from zdz_instant where date between :bt and :et';
        prepared:=True;
        parameters.ParamByName('bt').Value:=strtodatetime('2006-08-27 17:25:00');
        parameters.ParamByName('et').Value:=strtodatetime('2006-08-27 18:25:00');
        Open;
      end;
       ADOQuery2.First;
       while not ADOQuery2.Eof do
       begin
        for i:=0 to ADOQuery2.FieldCount-1 do
          begin
            if ADOQuery2.Fields.Fields[i].asstring='' then
              cols:=cols+'\N'+chr(9)
            else
              cols:=cols+ADOQuery2.Fields.Fields[i].asstring+chr(9);
          end;
        sqlbulk.Add(cols);
        cols:='';
        ADOQuery2.Next;
        end;
错误好像就出在fields里,到底什么原因?

解决方案 »

  1.   

    你的ADO的联接串是什么?如果我没猜错,你应该是用ado->myodbc来连mysql的,那你最好用myodbc 3.51.12版本,这个更可靠些,另外,mysql3.X的确老了些,很多功能不支持,建议升级mysql
      

  2.   

    我用的是3.51.12版本,mysql3.x是在别人的主机上用我只是去读,我是用delphi6.0,或者升级一下看看,或者还有什么方法改写源代码,不要用列出每个字段名的方法读字段,因为表里有50多列,大家有什么好方法吗,先谢了!
      

  3.   

    MYSQL不是我的没有权利升级,我升级到了delphi2006,找不到ADO了,哪位知道在哪里,把源代码拿来重新编译还是不行
      

  4.   

    连接MySQL最好别用ADO超慢,买一个dbexpress组件就几百块。如果用C++Builder可以直接用MySQL的C API速度非常快,速度是dbexpress的10倍以上。