Pessoal, coloquei em attach um método que estou tendo problemas.... Ele
carrega um vetor corretamente mas na hora de retorná-lo ocorrem algumas
alterações.
Coloquei vários comentários para auxiliar no compreendimento do
método.... por favor dêem uma olhada.... estou com urgência disso e não
consigo resolver o problema....



[]'s Valter
O problema que está acontecendo é o seguinte: Dentro do for, o vetor é carregado 
corretamente,
com três objetos do tipo Fornecimento. Eu sei disso por que já testei. Quando o for 
acaba e 
vai dar o "return vetor" o conteúdo do vetor já não é mais o mesmo !!! 

Explicando melhor: Depois da última repetição do for, o primeiro objeto fornecimento 
do vetor, 
possui um fornecedor de código 1, o segundo um fornecedor de código 2 e um terciro 
fornecedor de 
código 3. Se eu mandar imprimir os códigos dos fornecedores fora do "for", isto é, 
uma linha antes dele retonar (return) aparecerá que o primeiro objeto fornecimento do 
vetor 
possui código 2 ! o segundo código 3! e o terceiro também código 3 !!!



    public Vector SetObject2(ResultSet rsFornec)
    {
         Vector vetor = new Vector();
    try
    {
        // inicio da declaração das variáveis necessárias 

        int material;
        Vector vectorFornecedor = new Vector();
        Vector vectorMaterial = new Vector();
        Vector vectorDataFornecimento = new Vector();
        Integer codFornecedor;
        Integer codMaterial;
        int codMaterialI;
        int codFornecedorI;
        String dataFornecimento;
        CodigoFornecimento codigoFornecimento;
        Fornecimento fornecimento1;
        material material1 = new material();
        Fornecedor fornecedor1 = new Fornecedor();
        ResultSet rsMaterial;
        ResultSet rsFornecedor;

        // final da declaração das variáveis necessárias 

        int i = 0;

         // while responsável por criar tres vetores. Um com o codigo dos 
fornecedores, outro
         // com o código dos materiais e outro com a data de fornecimento. Tudo pego 
do resultSet
         // que chegou como parâmetro.

          while (rsFornec.next ())
          {
            codFornecedor = new Integer(rsFornec.getInt ("fornecedor"));
            codMaterial = new Integer(rsFornec.getInt ("material"));
            vectorMaterial.addElement (codMaterial);
            vectorFornecedor.addElement (codFornecedor);
            vectorDataFornecimento.addElement (rsFornec.getString 
("dataFornecimento"));
            
          }


      // o objetivo do for é criar um vetor de objetos do tipo Fornecimento. O objeto 
do tipo
      // fornecimento é formado por um objeto do tipo CodigoFornecimento e uma String 
dataFornecimento.
      // o objeto do tipo CodigoFornecimento é formado pelos objetos Material e 
Fornecedor.
      // sendo assim, primeiro eu carrego um objeto fornecedor, depos um material, 
crio o objeto
     // codigoFornecimento e crio um objeto Fornecimento. E em seguida adiciono no 
vetor. O for
     // repete esta ação para todos os elementos do vetor de codigos de fornecedor 
criado no while
    // anterior.
   
      for (int cont = 0; cont < vectorFornecedor.size (); cont++)
      {
            codFornecedor = (Integer)vectorFornecedor.elementAt(cont);
            codMaterial = (Integer)vectorMaterial.elementAt (cont);
            codMaterialI = codMaterial.intValue ();
            codFornecedorI = codFornecedor.intValue ();
            dataFornecimento = (String)vectorDataFornecimento.elementAt (cont);
            fornecedor1.setCodigo (codFornecedorI);
            rsFornecedor = null;
            rsFornecedor = fornecedor1.findlike ();  
           // o método findlike procura esse objeto no banco e joga os dados em um RS.

            if (rsFornecedor.next ())
                {
                    fornecedor1 = fornecedor1.SetObject (rsFornecedor); 
                    // o método SetObject pega os dados do rs passado e cria um objeto
                }

            material1.setCodigo (codMaterialI);
            rsMaterial = null;
            rsMaterial = material1.findlike ();
            if (rsMaterial.next ())
            {
                material1 = material1.SetObject (rsMaterial);
            }

            codigoFornecimento = new CodigoFornecimento(material1,fornecedor1); //cria 
objeto codigoFornecimento
            fornecimento1 = new Fornecimento(codigoFornecimento, dataFornecimento); // 
cria objeto Fornecimento
            vetor.insertElementAt (fornecimento1,cont); adiciona elemento no vetor
        
            // se eu mandar imprimir aqui está tudo certo...
       }

            // Se eu mandar iprimir aqui ele já trocou tudo...
            return vetor;
       }
       catch (Exception e)
       {
        return null;
       }
     }

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Reply via email to