none
Erro ao Receber Pedidos de um servidor web sql RRS feed

  • Pergunta

  • Olá tenho um Sistema de força de vendas, onde os vendedores mandam pedidos para um web server.
    Eu tenho um modulo do programa feito em Delphi que faz a conexão com este servidor e recebe os pedidos, mas agora ta dando o seguinte erro:

    não foi possível encontrar a instrução preparada com identificador 0

    conexão ocupada com os resultados de outro comando

    se alguem puder me dizer o q é esse erro.
    é erro de configuração no servidor SQL?
    • Movido Gustavo Maia Aguiar quarta-feira, 10 de março de 2010 22:46 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 10 de março de 2010 22:20

Respostas

  • Descobri o problema. Tinha ficado alguns itens de pedidos pra traz ai tava dando esse erro, desconfio q tenha sido isso pois apartir do momento que eu os exclui funcionou normalmente.
    • Marcado como Resposta Marcio S_ quarta-feira, 17 de março de 2010 21:45
    quarta-feira, 17 de março de 2010 21:45

Todas as Respostas

  • Boa Noite,

    Acho pouco provável que esse erro esteja relacionado a SQL Server. Na verdade se traduzirmos a mensagem para inglês "Could not possible to find the prepared statement with identifier ?" sequer aparece uma única ocorrência.

    A grosso modo, me parece que o Delphi conseguiu conectar e enviou um determinado comando. Como normalmente alguns providers bloqueiam a conexão enquanto o comando não retornar, talvez a mesma conexão esteja submetendo um novo comando antes da conclusão do anterior.

    Para eliminar o SQL Server da lista só mesmo se você rodar um profiler no SQL Server e verificar os comandos que estão chegando nele.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 10 de março de 2010 22:46
  • Marcio,

    Acredito que o problema esta mais relacionado ao seu aplicativo do que ao SQL Server.

    Eu trabalhei durante 10 anos com Delphi, acho pouco provavel que esta linguagem também seja o problema!!!

    Com qual componente você esta fazendo acesso ao SQL Server?

    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 11 de março de 2010 20:01
    Moderador
  • segue o Código para receber os pedidos:
    procedure TForm1.Button8Click(Sender: TObject);
    var nnota,pdini,pdfim: integer;
    begin
         Button8.Enabled:=true;
         pdini:=0;
         pdfim:=0;
         Qparam.Active:=true;
         Qparam.Open;
         nnota:=QparamNUMNOTA.AsLargeInt+1;
         QprodutosW.Active:=true;
         QprodutosW.Open;
         QvendasW.Active:=true;
         QvendasW.Open;
         QitemvendasW.Active:=true;
         QitemvendasW.Open; //Tabelas Windows
         Qvendas.Active:=true; //Tabelas SQL
         Qvendas.Open;
         Qvendas.First;
         QitemVenda.Active:=true;
         QitemVenda.Open;
         QformapagW.Active:=true;
         QformapagW.Open;
         pdini:=0;
        if messageDlg('Receber os pedios agora?',mtWarning,[mbYes,mbNo],0)=mrYes then
           begin
             while not Qvendas.Eof do //vendas web server
                 begin
                     QvendasW.Insert;
                     QvendasWCODCLI.AsString:=Qvendascodcli.AsString;
                     QvendasWCLIENTE.AsString:=Qvendasnomecli.AsString;
                     QvendasWCOD_VENDEDOR.AsString:=Qvendascodvend.AsString;
                     if QformapagW.RecordCount>0 then
                        QvendasWCODFORMAPAG.AsInteger:=QformapagWCODIGO.AsInteger
                     else
                        QvendasWCODFORMAPAG.AsInteger:=1;
                     QvendasWNUMNOTA.AsLargeInt:=nnota;//numero da nota windows
                     QvendasWSERIE.AsString:='NF';
                     QvendasWTOTAL_NOTA.AsCurrency:=Qvendastotalnota.AsCurrency;
                     QvendasWTOTAL_ITENS.AsCurrency:=Qvendastotalitem.AsCurrency;
                     QvendasWIMPRESSO.AsString:='NAO';
                     QvendasWDATAEMISSAO.AsDateTime:=Qvendasdata_entrada.AsDateTime;
                     pdini:=Qvendasnumped.AsInteger;
                     QvendasW.ApplyUpdates;
                     // INICIO itens
                     QitemVenda.Close;
                     QitemVenda.SQL.Clear;
                     QitemVenda.SQL.Add('select * from itemvenda where codvenda='+QuotedStr(Qvendasnumped.AsString)+'');
                     QitemVenda.Open;
                     QitemVenda.First;
                     while not QitemVenda.Eof do //itensvenda web server
                         begin
                             QitemvendasW.Insert;
                             QitemvendasWCODNOTA.AsLargeInt:=nnota;//numero da nota Windows
                             QitemvendasWCODPROD.AsString:=QitemVendacodprod.AsString;
                             QitemvendasWQUANTIDADE.AsCurrency:=QitemVendaquantidade.AsCurrency;
                             QitemvendasWVAL_UNIT.AsCurrency:=QitemVendavalunit.AsCurrency;
                             QitemvendasWDESCRICAO.AsString:=QitemVendaproduto.AsString;
                             QitemvendasWSUBTOTAL.AsCurrency:=QitemVendasubtotal.AsCurrency;
                             QitemvendasWUNIDADE.AsString:=QprodutosWCOMPOSTO_POR.AsString;
                             QitemvendasW.ApplyUpdates;
                             QitemVenda.Next;
                         end;
                     // FIM itens
                     //***** INICIO deleta a venda e os itens
                     QvendasDLT.Active:=true;
                     QvendasDLT.Open;
                     QvendasDLT.SQL.Add('delete from vendas where numped='+QuotedStr(IntToStr(pdini))+'');
                     QvendasDLT.ExecSQL;
                     QitemvendasDLT.Active:=true;
                     QitemvendasDLT.Open;
                     QitemVendasDLT.SQL.Add('delete from itemvenda where codvenda='+QuotedStr(IntToStr(pdini))+'');
                     QitemVendasDLT.ExecSQL;
                     //***** FIM deleta a venda e os itens
                     Qvendas.Next;
                  //   ProgressBar1.Position:=ProgressBar1.Position+1;
                     nnota:=nnota+1;
                 end;
             QitemvendasW.CommitUpdates;
             QvendasW.CommitUpdates;
             pdfim:=Qvendasnumped.AsInteger;
             showmessage('Concluido');
             Qparam.Edit;
             QparamNUMNOTA.AsLargeInt:=nnota;
             Qparam.CommitUpdates;
           end //fim do verifica se baixa os pedidos messagDlgs
         else
            Button8.Enabled:=false; 
    end;

    end.
    As tabelas que terminam com (W) são do banco windows e as outras do banco SQL
    Estou usando o Componente Zeos para ambas as conecxões.
    Qualquer sugestão será bem vinda.
    sexta-feira, 12 de março de 2010 02:18
  • Marcio,

    Analisando o seu código, estava me lembrando dos bons tempos de desenvolvedor.

    Aparentemente o código esta certo a única dúvida que fiquei, foi que não encontrei em nenhuma parte o comando post!!!
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sexta-feira, 12 de março de 2010 18:19
    Moderador
  • No meu caso eu uso QitemvendasW.ApplyUpdates e depois QitemvendasW.CommitUpdates que faz o mesmo que o post.

    Estando o código ok não seria problema do sevidor que eu contratei que esta tendo muitas requisições simultaneas de vários usuários e ta travando? Pois se for este o caso vou entrar em contato com o pessoal que é responsável pelo fornecimento do serviço.
    sábado, 13 de março de 2010 01:11
  • Descobri o problema. Tinha ficado alguns itens de pedidos pra traz ai tava dando esse erro, desconfio q tenha sido isso pois apartir do momento que eu os exclui funcionou normalmente.
    • Marcado como Resposta Marcio S_ quarta-feira, 17 de março de 2010 21:45
    quarta-feira, 17 de março de 2010 21:45