Array
(
)

Comparando contéudos em dois bancos de dados diferentes

Chayene Carmo
   - 18 dez 2014

Bom dia, tenho uma aplicação que roda com o seguinte banco PostGres porém preciso fazer um filtro em um banco Access porém não quer da certo, acho que o problema está na conexão, alguém poderia me da um help.
Conexão tá da seguinte forma:
public Conexao_DAO()
{
_stringConexao = @"Dsn=PostgreSQL30;uid=postgres";
cn_conexao_post = new OdbcConnection(_stringConexao);
cn_conexao_post.Open();
}
public Conexao_DAO(bool access = false)
{
try
{
cn_conexao_access = new OleDbConnection();
cn_conexao_access.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Cont2015.mdb";
cn_conexao_access.Open();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Jothaz
   - 18 dez 2014

Da uma olhada no link e veja se consegue avançar:

http://www.dcc.fc.up.pt/~pbrandao/aulas/0203/bd/access.htm

Chayene Carmo
   - 18 dez 2014

Pior que não deu certo, estou usando o OleDB

Joel Rodrigues
   - 26 dez 2014

Poderia ser mais clara sobre o problema? Tem alguma mensagem de erro para auxiliar?

Chayene Carmo
   - 08 jan 2015

Bom dia Joel, então achei que era conexão mas não o problema está no parâmetro, quando uso a mesma instrução no Access ele me retorna resultado na minha aplicação não.

Joel Rodrigues
   - 08 jan 2015

É, já vi bem esse erro. Lá vamos nós outra vez...
Coloca aqui o método onde você faz o filtro com parâmetro que não está dando certo.
Por favor, use as tags de formatação de código disponíveis no fórum.

Chayene Carmo
   - 09 jan 2015

#Código

public ArrayList ListarEmpenho(int id_centro_custo)
{
ArrayList listarEmpenhos = new ArrayList();
Nota_Empenho_BO neBO;

using (_minhaConexao = new Conexao_DAO(true))
{
string select = "Select NotaEmpenho.AnoNota, NotaEmpenho.IdNota, NotaEmpenho.IdTipoEmpenho, NotaEmpenho.TotalNota, NotaEmpenho.ValorLiquidado, NotaEmpenho.ValorPago, NotaEmpenho.ValorAnulado, NotaEmpenho.CGC, NotaEmpenho.Tradutora, PlanoConta.IdProjetoOuATividade from NotaEmpenho inner join PlanoConta on NotaEmpenho.Tradutora = PlanoConta.IdTradutora "; /* where (PlanoConta.IdProjetoOuAtividade ='" + id_centro_custo + "') */

OleDbDataReader reader = _minhaConexao.ExecutaLeitura_Access(select);
while (reader.Read())
{
if (reader[9].ToString() != id_centro_custo.ToString())
{
neBO = new Nota_Empenho_BO();
neBO.Ano_Nota = Convert.ToInt32(reader[0]);
neBO.Id_Nota = Convert.ToInt32(reader[1]);
if (Convert.ToInt16(reader[2]) == 00)
{
neBO.Tipo_Empenho = Tipo_Empenho.N_existe;
}
else if (Convert.ToInt16(reader[2]) == 01)
{
neBO.Tipo_Empenho = Tipo_Empenho.Ordinaria;
}
else if (Convert.ToInt16(reader[2]) == 02) if (reader[9].ToString() == id_centro_custo.ToString())
{
neBO.Tipo_Empenho = Tipo_Empenho.Estimativa;
}
else
{
neBO.Tipo_Empenho = Tipo_Empenho.Global;
}
neBO.Total_Nota = Convert.ToDecimal(reader[3]);
neBO.ValorLiquidado = Convert.ToDecimal(reader[4]);
neBO.ValorPago = Convert.ToDecimal(reader[5]);
neBO.ValorAnulado = Convert.ToDecimal(reader[6]);
neBO.CGC = Convert.ToString(reader[7]);
neBO.Tradutora = Convert.ToString(reader[8]);

listarEmpenhos.Add(neBO);
}
}
reader.Dispose();
return listarEmpenhos;
}
}

Joel Rodrigues
   - 09 jan 2015

Primeira tentativa. Faça essa consulta usando parâmetros no OleDbCommand, ao invés de concatenar a string.