Login
Estamos no Facebook
Buscar
Quem está conectado
Há 30 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 30 Visitantes :: 2 Motores de buscaNenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Brasília
| |
Estamos no Twitter

Nossa Comunidade

Nosso Grupo

Últimos assuntos
Top dos mais postadores
| Marcos Guedes | ||||
| hugo | ||||
| alceu11 | ||||
| Julio | ||||
| m@r<3|o | ||||
| mfelis | ||||
| Tales Ruan | ||||
| Nelson Arcas | ||||
| _batmanvfp_ | ||||
| marcio |
Karaoke feito em FoxPro 2.6
23/5/2012, 11:45 por fabiomacarrao
Bom dia a todos. Desenvolvi um programa em FoxPro for windows 2.6 para karaoke. tenho mais de 2700 …
Comentários: 3
Estatísticas
Temos 4048 usuários registradosO último usuário registrado atende pelo nome de fabiomacarrao
Os nossos membros postaram um total de 14433 mensagens em 2047 assuntos
Usando FLUORINE FX
Página 1 de 1 • Compartilhe •
Usando FLUORINE FX
Gente to fazendo uma aplicação que preciso receber no C# um ArrayCollection do Flex Builder 3.
O código C# está assim:
Porém na hora de de colocara a posição i no ArrayList temp ele me devolve o seguinte erro:
Não é possível converter um objeto do tipo 'Citium.SisWeb.Contas_a_Pagar' no tipo 'System.Collections.ArrayList'
Alguém sabe o que pode ser?
O código C# está assim:
- Código:
public Boolean AutorizarPagamento(ArrayList arrayautorizar)
{
SqlCommand cmd = new SqlCommand();
try
{
cmd.Parameters.Clear();
cmd.Connection = DbCitium.conn();
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"BEGIN TRAN AutorizarPagamento;";
int j = arrayautorizar.Count;
ArrayList arraytemp = new ArrayList(arrayautorizar);
for (int i = 0; i < j; i++)
{
[b] ArrayList temp = (ArrayList)arraytemp[i];[/b]
for (int ii = 0; ii < temp.Count; ii++)
{
cmd.CommandText += @"UPDATE Contas_a_Pagar SET
v_pagamento_autorizado = @v_pagamento_autorizado,
v_quem_autorizou = @v_quem_autorizou
WHERE i_id_conta_a_pagar = @i_id_conta_a_pagar;";
SqlParameter param;
param = new SqlParameter("@i_id_conta_a_pagar", SqlDbType.Int);
param.IsNullable = true;
param.Value = temp[i];
cmd.Parameters.Add(param);
param = new SqlParameter("@v_quem_autorizou", SqlDbType.VarChar, 50);
param.IsNullable = true;
param.Value = "TESTE";
cmd.Parameters.Add(param);
param = new SqlParameter("@v_pagamento_autorizado", SqlDbType.VarChar, 10);
param.IsNullable = true;
param.Value = "SIM";
cmd.Parameters.Add(param);
cmd.Prepare();
cmd.ExecuteNonQuery();
cmd.Dispose();
}
}
cmd.CommandText += @"COMMIT TRAN AutorizarPagamento;";
return true;
}
catch (SqlException e)
{
throw new Exception("Erro ao alterar Registro. Descrição: " + DbCitium.getSQLErrors(e));
cmd.Connection = DbCitium.conn();
cmd.Parameters.Clear();
cmd.CommandType = CommandType.Text;
cmd.CommandText+= @"ROLLBACK TRAN AutorizarPagamento";
}
catch (Exception e)
{
throw new Exception("Erro ao alterar Registro. Descrição: " + e.Message);
cmd.Connection = DbCitium.conn();
cmd.Parameters.Clear();
cmd.CommandType = CommandType.Text;
cmd.CommandText += @"ROLLBACK TRAN AutorizarPagamento";
}
finally
{
cmd = null;
}
}
Porém na hora de de colocara a posição i no ArrayList temp ele me devolve o seguinte erro:
Não é possível converter um objeto do tipo 'Citium.SisWeb.Contas_a_Pagar' no tipo 'System.Collections.ArrayList'
Alguém sabe o que pode ser?

nathalia.delavi- Participante Regular

Re: Usando FLUORINE FX
Nathalia, não observei muitos detalhes, mas da forma como está, você está tentando transforma um item de um ArrayList, em outro ArrayList, por isso está ocorrendo o erro. (que neste caso, só é observado em tempo de execução)
Tente fazer o seguinte para ver se resolve...
Altere a linha de código:
Para:
E a linha:
Para:
Resolve?
Tente fazer o seguinte para ver se resolve...
Altere a linha de código:
- Código:
ArrayList arraytemp = new ArrayList(arrayautorizar);
Para:
- Código:
ArrayList arraytemp = arrayautorizar;
E a linha:
- Código:
ArrayList temp = (ArrayList)arraytemp[i];
Para:
- Código:
ArrayList temp = arraytemp;
Resolve?
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Usando FLUORINE FX
O problema é que não referenciando índice no segundo código, como ele vai preencher temp com cada uma das linhas do arraytemp?

nathalia.delavi- Participante Regular

Re: Usando FLUORINE FX
Isso mesmo que ocorreu..
Quando tentei inserir o valor no banco ele fala assim:
"Não é possível converter Contas_a_Pagar em Int32"
Ele não ta lendo o elemento dentro de [i] e dentro de [i_id_conta_a_pagar]
Quando tentei inserir o valor no banco ele fala assim:
"Não é possível converter Contas_a_Pagar em Int32"
Ele não ta lendo o elemento dentro de [i] e dentro de [i_id_conta_a_pagar]

nathalia.delavi- Participante Regular

Re: Usando FLUORINE FX
Nathalia, pelo que entendi do código, arraytemp é uma variável que guardará uma cópia das informações contidas em arrayautorizar, correto?
Sendo assim, basta alterar a linha:
Para:
O que eu não entendi foi a seguinte linha:
Por que você está tentando converter o item de um ArrayList em outro ArrayList?
A variável arrayautorizar é uma coleção de ArrayList's?
Talvez você nem precisasse da variável temp.
Então seu código ficaria assim:
Sendo assim, basta alterar a linha:
- Código:
ArrayList arraytemp = new ArrayList(arrayautorizar);
Para:
- Código:
ArrayList arraytemp = arrayautorizar;
O que eu não entendi foi a seguinte linha:
- Código:
ArrayList temp = (ArrayList)arraytemp[i];
Por que você está tentando converter o item de um ArrayList em outro ArrayList?
A variável arrayautorizar é uma coleção de ArrayList's?
Talvez você nem precisasse da variável temp.
Então seu código ficaria assim:
- Código:
public Boolean AutorizarPagamento(ArrayList arrayautorizar)
{
SqlCommand cmd = new SqlCommand();
try
{
cmd.Parameters.Clear();
cmd.Connection = DbCitium.conn();
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"BEGIN TRAN AutorizarPagamento;";
int j = arrayautorizar.Count;
ArrayList arraytemp = arrayautorizar;
for (int i = 0; i < j; i++)
{
for (int ii = 0; ii < arraytemp.Count; ii++)
{
cmd.CommandText += @"UPDATE Contas_a_Pagar SET
v_pagamento_autorizado = @v_pagamento_autorizado,
v_quem_autorizou = @v_quem_autorizou
WHERE i_id_conta_a_pagar = @i_id_conta_a_pagar;";
SqlParameter param;
param = new SqlParameter("@i_id_conta_a_pagar", SqlDbType.Int);
param.IsNullable = true;
param.Value = arraytemp[i];
cmd.Parameters.Add(param);
param = new SqlParameter("@v_quem_autorizou", SqlDbType.VarChar, 50);
param.IsNullable = true;
param.Value = "TESTE";
cmd.Parameters.Add(param);
param = new SqlParameter("@v_pagamento_autorizado", SqlDbType.VarChar, 10);
param.IsNullable = true;
param.Value = "SIM";
cmd.Parameters.Add(param);
cmd.Prepare();
cmd.ExecuteNonQuery();
cmd.Dispose();
}
}
cmd.CommandText += @"COMMIT TRAN AutorizarPagamento;";
return true;
}
catch (SqlException e)
{
throw new Exception("Erro ao alterar Registro. Descrição: " + DbCitium.getSQLErrors(e));
cmd.Connection = DbCitium.conn();
cmd.Parameters.Clear();
cmd.CommandType = CommandType.Text;
cmd.CommandText += @"ROLLBACK TRAN AutorizarPagamento";
}
catch (Exception e)
{
throw new Exception("Erro ao alterar Registro. Descrição: " + e.Message);
cmd.Connection = DbCitium.conn();
cmd.Parameters.Clear();
cmd.CommandType = CommandType.Text;
cmd.CommandText += @"ROLLBACK TRAN AutorizarPagamento";
}
finally
{
cmd = null;
}
}
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Usando FLUORINE FX
Marcos, consegui resolver o problema... Deixa eu explicar pra ficar aqui caso alguém tenha essa mesma dúvida:
O meu problema era pra acessar as informações dentro de um array bidimensional, precisaria acessá-las uma de cada vez fazer o update para o banco e depois fazer um commit ok?
Eu havia criado uma classe chamada: Contas_a_Pagar com todos os membros necessários a incorporação no banco e também com os métodos para get e set. Só que essa classe não aceita receber dados bidimensionais então coloquei o recebimento desses dados num array, chamado: arrayautorizar. Para colocar os dados do arrayautorizar na classe Contas_a_Pagar e acessá-los eu fiz assim:
Na hora de acessar o dado do arraytemp era só fazer assim:
Simples né??
O caso que eu tava tentando acessar do jeito errado e convertendo os arquivos do jeito errado, tentando colocar um dos indices bidimensionais dentro de um array unidimensional. A idéia tava certa... O jeito de fazer que tava errado... hahahaha
Valeusss!! =D
O meu problema era pra acessar as informações dentro de um array bidimensional, precisaria acessá-las uma de cada vez fazer o update para o banco e depois fazer um commit ok?
Eu havia criado uma classe chamada: Contas_a_Pagar com todos os membros necessários a incorporação no banco e também com os métodos para get e set. Só que essa classe não aceita receber dados bidimensionais então coloquei o recebimento desses dados num array, chamado: arrayautorizar. Para colocar os dados do arrayautorizar na classe Contas_a_Pagar e acessá-los eu fiz assim:
- Código:
for(int i = 0; i < arrayautorizar.count; i++)
{
Conta_a_Pagar arraytemp = (Conta_a_Pagar) arrayautorizar[i];
... //resto do código
}
Na hora de acessar o dado do arraytemp era só fazer assim:
- Código:
param.value = arraytemp.i_id_conta_a_pagar;
Simples né??
O caso que eu tava tentando acessar do jeito errado e convertendo os arquivos do jeito errado, tentando colocar um dos indices bidimensionais dentro de um array unidimensional. A idéia tava certa... O jeito de fazer que tava errado... hahahaha
Valeusss!! =D

nathalia.delavi- Participante Regular

Página 1 de 1
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
Início
» Modificar TitleBar e Icone do Executavel.
» Criar atalho, SYS(2020) e Desktop
» Karaoke feito em FoxPro 2.6
» Como separar caminho do diretório?
» Utilizando PHPMailer
» Programador em Visual Foxpro
» Link PHP (Dúvida)
» Fundo do PROJETO Transparente??
» Minimizar , Maximizar e Restaurar
» Pivot Table no sql server
» Scroll EditBox Automatico
» Select Nexval do FoxPro no OracleXE
» Colocar gif na caixa do MESSAGEBOX ()
» Comparar Versões do programa.exe
» Menu lateral
» Fazer com que a tela do sistema assume a janela principal
» Trocar Palavra no Sistema
» invocar Dll em Xbase
» Fechar Porta Aberta