我用的是ADOCONNECTION    ADOQUERY   
但是我在客户端连接为什么什么反应没有?
在装了DELPHI的电脑上没有问题!

解决方案 »

  1.   

    mdac装了吗?
    还有ole db
      

  2.   

    你应该用DCOMConnection来连就没有问题了!
      

  3.   

    什么提示没有!
    TO 你应该用DCOMConnection来连就没有问题了!
       我用的是两层结构
      

  4.   

    ADOCONNECTION 激活了没有?连接字串是否经过测试?
      

  5.   

    procedure Treportform.Button1Click(Sender: TObject);
    var
      count, ret0: longint;
      arow, col, row, lrow, rrow, lrrow, i: integer;
      msg_src: string;
      flag: real;
      Ecount, Esuccess, EError: longint;
      isexist: boolean;
      str, year, month, day: string;
    begin
      str := datetostr(date1.date);
      year := copy(str, 0, 4);
      str := copy(str, 6, length(str) - 4);
      if pos('-', str) = 2 then
        month := '0' + copy(str, 1, 1)
      else if pos('-', str) > 2 then
        month := copy(str, 1, 2);
      day := copy(str, pos('-', str) + 1, length(str) - pos('-', str));  row := 2;
      showmessage('snake');
      panel2.Caption := '正在执行1号查询!';
      query.Close;
      query.SQL.Clear;
      query.SQL.Add('select msg_src,ret,count(*) from bak_mt_' + year + month + ' where day(insert_time)=' + day + '  group by msg_src,ret order by msg_src,ret');
      query.Open;
      panel2.Caption := '正在执行2号查询!';  chatquery.Close;
      chatquery.SQL.Clear;
      chatquery.SQL.Add('select msg_src,ret,count(*) from bak_mt_chat_' + year + month + ' where day(insert_time)=' + day + '  group by msg_src,ret order by msg_src,ret');
      chatquery.Open;  panel2.Caption := '正在执行3号查询!';
      tquery.Close;
      tquery.SQL.Clear;
      tquery.SQL.Add('select bak_mt_' + year + month + '.msg_src,bak_rpt_200306.rpt_stat,count(*)');
      tquery.sql.Add('from bak_mt_' + year + month + ',bak_rpt_' + year + month);
      tquery.sql.add('where bak_mt_' + year + month + '.msg_id1=bak_rpt_' + year + month + '.rpt_msg_id and bak_mt_' + year + month + '.msg_id2 =bak_rpt_' + year + month + '.rpt_msg_id2 and day (bak_mt_' + year + month + '.insert_time)=' + day + ' and bak_mt_' + year + month + '.msg_id1<>0 and bak_mt_' + year + month + '.ret=0');
      tquery.SQL.Add('group by bak_rpt_' + year + month + '.rpt_stat,bak_mt_' + year + month + '.msg_src');
      tquery.SQL.Add('order by msg_src,rpt_stat');
      tquery.Open;
      panel2.Caption := '正在执行4号查询!';  chattquery.Close;
      chattquery.SQL.Clear;
      chattquery.SQL.Add('select bak_mt_chat_' + year + month + '.msg_src,bak_rpt_' + year + month + '.rpt_stat,count(*)');
      chattquery.sql.Add('from bak_mt_chat_' + year + month + ',bak_rpt_' + year + month);
      chattquery.sql.add('where bak_mt_chat_' + year + month + '.msg_id1=bak_rpt_' + year + month + '.rpt_msg_id and bak_mt_chat_' + year + month + '.msg_id2 =bak_rpt_' + year + month + '.rpt_msg_id2 and day (bak_mt_chat_' + year + month + '.insert_time)=' + day + ' and bak_mt_chat_' + year + month + '.msg_id1<>0 and bak_mt_chat_' + year + month + '.ret=0');
      chattquery.SQL.Add('group by bak_rpt_' + year + month + '.rpt_stat,bak_mt_chat_' + year + month + '.msg_src');
      chattquery.SQL.Add('order by msg_src,rpt_stat');
      chattquery.Open;  panel2.Caption := '正在生成报表!';
      report.SetActiveCell(1, 1);
      report.Text := '数据源';
      report.TextRC[1, 8] := '发送失败' + #13 + '错误类型';
      report.TextRC[1, 9] := '条数';
      report.SetActiveCell(1, 2);
      report.Text := '发送总条数';
      report.SetActiveCell(1, 3);
      report.Text := '成功发送率';
      report.SetActiveCell(1, 4);
      report.Text := '失败发送率';
      report.SetActiveCell(1, 10);
      report.Text := '状态报告' + #13 + '失败类型';
      report.SetActiveCell(1, 11);
      report.Text := '条数';
      report.SetActiveCell(1, 5);
      report.Text := '状态报告' + #13 + '回收率';
      report.SetActiveCell(1, 6);
      report.text := '状态报告' + #13 + '成功率';
      report.SetActiveCell(1, 7);
      report.Text := '状态报告' + #13 + '失败率';
      query.first;
      tquery.First;
      chattquery.First;
      chatquery.First;
      

  6.   

    while (not query.Eof) or (not chatquery.Eof) do
      begin
        ret0 := 0;
        count := 0;
        ecount := 0;
        esuccess := 0;
        flag := 0;
        eerror := 0;
        rrow := row;
        arow := row;
        lrrow := rrow;
        if query.FieldByName('msg_src').Value = chatquery.FieldByName('msg_src').Value then
        begin
          msg_src := query.FieldByName('msg_src').asstring;
          while (msg_src = query.FieldByName('msg_src').asstring) and (not query.Eof) do
          begin
            count := count + query.Fields[2].Value;
            if query.FieldByName('ret').Value = 0 then
              ret0 := ret0 + query.Fields[2].value
            else
            begin
              report.TextRC[rrow, 8] := inttostr(query.Fields[1].Value);
              report.TextRC[rrow, 9] := inttostr(query.Fields[2].Value);
              rrow := rrow + 1;
            end;
            query.Next;
          end;
          while (msg_src = chatquery.FieldByName('msg_src').asstring) and (not chatquery.Eof) do
          begin
            count := count + chatquery.fields[2].value;
            if chatquery.FieldByName('ret').Value = 0 then
              ret0 := ret0 + chatquery.Fields[2].Value
            else
              for i := lrrow to rrow - 1 do
              begin
                if chatquery.Fields[1].AsString = report.Textrc[i, 10] then
                begin
                  report.TextRC[i, 11] := inttostr(strtoint(report.textrc[i, 11]) + chatquery.Fields[2].asinteger);
                  break;
                end
                else
                  if i = row - 1 then
                  begin
                    report.textrc[rrow, 10] := chatquery.Fields[1].AsString;
                    report.textrc[rrow, 11] := inttostr(chatquery.Fields[2].value);
                    rrow := rrow + 1;
                    break;
                  end;
              end;
            chatquery.Next;
          end;
          report.SetActiveCell(row, 1);
          report.Text := msg_src;      report.SetActiveCell(row, 2);
          report.Text := inttostr(count);      flag := ret0 / count;
          if flag < 1 then
          begin
            flag := strtofloat(copy(floattostr(flag), pos('.', floattostr(flag)) + 1, 5));
            flag := flag / 1000;
          end
          else if flag = 1 then
            flag := flag * 100;
          report.SetActiveCell(row, 3);
          report.Text := floattostr(flag) + '%';      report.SetActiveCell(row, 4);
          report.Text := floattostr(100 - flag) + '%';
          lrow := row;
          while (Tquery.Fields[0].AsString = msg_src) and (not Tquery.Eof) do
          begin
            Ecount := ecount + Tquery.Fields[2].Value;
            if (Tquery.Fields[1].AsString = 'DELIVRD') or (Tquery.Fields[1].AsString = 'E0') then
              Esuccess := Esuccess + tquery.Fields[2].Value
            else
            begin
              report.SetActiveCell(row, 10);
              report.Text := tquery.Fields[1].AsString;          report.SetActiveCell(row, 11);
              report.Text := inttostr(tquery.Fields[2].Value);
              row := row + 1;
            end;
            tquery.Next;
          end;
          while (chatTquery.Fields[0].AsString = msg_src) and (not chatTquery.Eof) do
          begin
            Ecount := ecount + chatTquery.Fields[2].Value;
            if (chatTquery.Fields[1].AsString = 'DELIVRD') or (chatTquery.Fields[1].AsString = 'E0') then
              Esuccess := Esuccess + chattquery.Fields[2].Value
            else
              for i := lrow to row - 1 do
              begin
                if chatTquery.Fields[1].AsString = report.Textrc[i, 10] then
                begin
                  report.TextRC[i, 11] := inttostr(strtoint(report.textrc[i, 11]) + chatTquery.Fields[2].asinteger);
                  break;
                end
                else
                  if i = row - 1 then
                  begin
                    report.textrc[row, 10] := chatTquery.Fields[1].AsString;
                    report.textrc[row, 11] := inttostr(chatTquery.Fields[2].value);
                    row := row + 1;
                    break;
                  end;          end;
      

  7.   


            chattquery.Next;
          end;
          flag := Ecount / ret0;
          if flag < 1 then
          begin
            flag := strtofloat(copy(floattostr(flag), pos('.', floattostr(flag)) + 1, 5));
            flag := flag / 1000;
          end
          else if flag = 1 then
            flag := flag * 100;
          report.SetActiveCell(arow, 5);
          report.Text := floattostr(flag) + '%';
          flag := Esuccess / ecount;
          if flag < 1 then
          begin
            flag := strtofloat(copy(floattostr(flag), pos('.', floattostr(flag)) + 1, 5));
            flag := flag / 1000;
          end
          else if flag = 1 then
            flag := flag * 100;
          report.TextRC[arow, 6] := floattostr(flag) + '%';
          report.SetActiveCell(arow, 7);
          report.Text := floattostr(100 - flag) + '%';
        end;
      end;
      panel2.Caption := 'OK!';
    end;
    procedure Treportform.Button4Click(Sender: TObject);
    begin
      query.Close;
      chatquery.Close;
      tquery.close;
      chatquery.Close;
      application.Terminate;
    end;procedure Treportform.Button2Click(Sender: TObject);
    var filetype: smallint;
    begin
      saveasexcel.Execute;
      filetype := F1FileExcel5;
      if saveasexcel.FileName <> '' then
      try
        report.Write(saveasexcel.filename + '.xls', filetype);
      except
        application.messagebox(pchar('保存到文件' + saveasexcel.filename + '.xls' + '不成功!'), '提示!', 0);
      end;
      filename := saveasexcel.filename + '.xls';
    end;procedure Treportform.Button3Click(Sender: TObject);
    var
      address: integer;
      i: integer;
    begin
      if memo1.Text = '' then
      begin
        showmessage('没有地址!');
        exit;
      end;
      if filename = '' then
      begin
        showmessage('你还没有保存文件或没有可以发送的文件!');
      end;
      panel2.Caption := '正在连接';
      smtp.ClearParams := true;
      address := pos('@', email.Text);
      smtp.Host := copy(email.Text, address + 1, length(email.Text) - address);
      smtp.UserID := username.Text;
      smtp.TimeOut := 20000;
      try
        smtp.Connect;
      except
        panel2.Caption := '连接失败';
        exit;
      end;
      for i := 0 to memo1.Lines.Count - 1 do
      begin
        panel2.Caption := 'To' + memo1.Lines.Text;
        smtp.PostMessage.FromAddress := Email.Text;
        smtp.PostMessage.FromName := username.Text;
        smtp.PostMessage.ToAddress.Add(memo1.LineS.Strings[i]);
        smtp.PostMessage.toblindcarboncopy.add('');
        smtp.PostMessage.tocarboncopy.add('');
        smtp.PostMessage.Subject := datetostr(date1.Date);
        smtp.PostMessage.Attachments.Add(filename);
        smtp.SendMail;
      end;
    end;procedure Treportform.Button5Click(Sender: TObject);
    begin
      memo1.Lines.SaveToFile('c:\Email.sys');
      filename := '';
    end;procedure Treportform.FormShow(Sender: TObject);
    begin
      adoconnection1.Connected := true;
      try
        memo1.Lines.LoadFromFile('c:\Email.sys');
      except
      end;
    end;procedure Treportform.smtpDisconnect(Sender: TObject);
    begin
      panel2.Caption := '已经连接'
    end;procedure Treportform.smtpSuccess(Sender: TObject);
    begin
      panel2.Caption := '已经发送完毕'
    end;procedure Treportform.smtpConnect(Sender: TObject);
    begin
      panel2.Caption := '已经连接'
    end;procedure Treportform.smtpFailure(Sender: TObject);
    begin
      showmessage('无法发送!');
    end;procedure Treportform.ADOConnection1BeforeConnect(Sender: TObject);
    begin
      panel2.Caption := '正在连接数据库!';
    end;procedure Treportform.ADOConnection1AfterConnect(Sender: TObject);
    begin
      panel2.Caption := '连接成功!';
    end;end.我的所有代码
    是设置为连接的!
      

  8.   

    提供点信息,供大家参考,好帮你分析一下,请确认:
    1。你的客户端应安装了客户端组件
    2。可以PING通(网络畅通)
    3。其他连接方式可以连通,如数据库的客户端工具/SQL EXPLORERDENG/ODBC等
      

  9.   

    可能的原因:
    mdac的版本过低
    本身网络不通
    连接协议错误
    用户名和密码错误
    没有安装客户端程序或者缺少相应动态连接库(如果使用sql server2000)