Sei que a forma mais rápida, é trabalhar diretamente no BD, porem, no meu caso não é possível, então apelei para uma aplicação. Meu caso é o seguinte: Numa dada tabela tenho um campo de tamanho 20 posições. As quatro primeiras forma o que chamamos de operacao, uma sequecencia de zeros, que não tem um tmanho exato(variável) e depois uma sequecencia de dígitos. Isso vai para os bancos q meu cliente trabalha. Acontece, que quando vem de um determinado banco(Itau), eles mandam apenas os últimos digitos apos a sequencia de zeros, em uma planilha que varia: Valores com: 6,7,8,9,10,11,12,13,14 dígitos. O meu cliente é leigo e eu não posso mndar um script para eles, para substring com 6,7,8..14 posições, para eles ficarem executando lá. quando vou lá eu faço isso e cobro por script, o que eles não querem mais. Aí fiz uma aplicação, mas está lenta demais. Veja o código quase completo(ainda falta o código da geração da planilha final) do aplicativo.
Pergunta
pjava
Sei que a forma mais rápida, é trabalhar diretamente no BD, porem, no meu caso não é possível, então apelei para uma aplicação. Meu caso é o seguinte: Numa dada tabela tenho um campo de tamanho 20 posições. As quatro primeiras forma o que chamamos de operacao, uma sequecencia de zeros, que não tem um tmanho exato(variável) e depois uma sequecencia de dígitos. Isso vai para os bancos q meu cliente trabalha. Acontece, que quando vem de um determinado banco(Itau), eles mandam apenas os últimos digitos apos a sequencia de zeros, em uma planilha que varia: Valores com: 6,7,8,9,10,11,12,13,14 dígitos. O meu cliente é leigo e eu não posso mndar um script para eles, para substring com 6,7,8..14 posições, para eles ficarem executando lá. quando vou lá eu faço isso e cobro por script, o que eles não querem mais. Aí fiz uma aplicação, mas está lenta demais. Veja o código quase completo(ainda falta o código da geração da planilha final) do aplicativo.
private void Execute()
{
string sql = "";
string temp = "";
string caminho = edtPath.Text;
string[] valor;
int tamanho = 0;
string contrato_temp = "";
string campo = "";
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["conexaoMysql"].ConnectionString;
MySqlConnection conn1 = new MySqlConnection();
conn1.ConnectionString = ConfigurationManager.ConnectionStrings["conexaoMysql"].ConnectionString;
MySqlCommand cmd = new MySqlCommand();
conn.Open();
conn1.Open();
DataTable tbl = new DataTable();
tbl.Columns.Add("Operacao", typeof(string));
tbl.Columns.Add("Contrato", typeof(string));
tbl.Columns.Add("Data de Vencimento", typeof(DateTime));
tbl.Columns.Add("Empresa", typeof(string));
tbl.Columns.Add("Status", typeof(string));
tbl.Columns.Add("Tipo de Envio", typeof(string));
tbl.Columns.Add("Data de Registro", typeof(DateTime));
tbl.Columns.Add("Data de Postagem", typeof(DateTime));
tbl.Columns.Add("Data de Retorno", typeof(DateTime));
sql = "select contrato from temp_baixa_arquivo";
cmd.Connection = conn;
cmd.CommandText = sql;
MySqlDataReader dr = cmd.ExecuteReader();
tamanho = 17999;
int i = 0;
valor = new string[tamanho];
while (dr.Read()& i < tamanho)
{
contrato_temp = dr["contrato"].ToString();
valor = contrato_temp;
i += 1;
}
//while (dr.Read())
for (int j = 0; j < valor.Length; j++ )
{
campo = valor[j].ToString();
sql = "select a.campo027 as 'Operacao',a.contrato, a.campo028 as 'Data_Contrato', 'CLS' " +
",a.dtreg as 'Data_Registro', a.dtreg as 'Data_Postagem',b.dtbaixa as 'Data_Retorno' " +
",b.TPOCO as 'Status',a.tipodocumento as 'Tipo_Envio' " +
"from " +
"baixas b inner join arquivo a on(a.registro = b.registro) " +
"where " +
"a.contrato like '%" + campo + "'" +
" and a.codcli = 60 ";
MySqlCommand cmdTemp = new MySqlCommand();
cmdTemp.Connection = conn1;
cmdTemp.CommandText = sql;
MySqlDataReader drtemp = cmdTemp.ExecuteReader();
while (drtemp.Read())
{
string oper = drtemp["Operacao"].ToString();
string contrat = campo;
string dt_contrat = drtemp["Data_Contrato"].ToString();
string cls = drtemp["CLS"].ToString();
string dt_reg = drtemp["Data_Registro"].ToString();
string dt_post = drtemp["Data_Postagem"].ToString();
string dt_ret = drtemp["Data_Retorno"].ToString();
string status = drtemp["Status"].ToString();
string envio = drtemp["Tipo_Envio"].ToString();
DataRow lin = tbl.NewRow();
lin["Operacao"] = oper;
lin["Contrato"] = contrat;
lin["Data de Vencimento"] = dt_contrat;
lin["Empresa"] = "CLS";
lin["Status"] = status;
lin["Tipo de Envio"] = envio;
lin["Data de Registro"] = dt_reg;
lin["Data de Postagem"] = dt_post;
lin["Data de Retorno"] = dt_ret;
tbl.Rows.Add(lin);
}
drtemp.Dispose();
cmdTemp.Dispose();
}
dr.Dispose();
conn.Close();
} //Fim do Execute
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.