Array
(
)

Problemas com o BdpDataAdapter no MS SQL Server 2000

Knight_of_wine
   - 07 jun 2007

O fórum teve pronblemas, tive até que me registrar denovo.

Espero que alguém possa me ajudar, de verdade! :(

É difícil achar alguém que responda coisas sobre o Delphi.Net.

Estou tentando inserir os dados de um dateset, que contém uma tabela X do meu banco de dados.
O obejtivo do programa é incluir alguns dados desta tabela em outra tabela.

Quando executo o comando InsertCommand.ExecuteNonQuery, aparece o seguinte erro:
´Seqüencia de entrada não estava em um formato incorreto´

Eu olhei os dados que estão indo para os parametros e aparentemente estão corretos.

Estou usando MSSQL 2000

Segue o meu código do botão de importação:

procedure TWinForm.BtnImportar_Click(sender: System.Object; e: System.EventArgs);
var
I: Integer;
LinhaAtual : DataRow;
DtRef:DateTime;
begin
try
try
for I := 0 to dsTabelas.Tables[0].Rows.Count - 1 do
begin
LinhaAtual := dsTabelas.Tables[0].Rows[i];
ProgressBar1.Maximum := dsTabelas.Tables[0].Rows.Count;
ProgressBar1.Increment(1);
DtRef := Convert.ToDateTime(´01/´+LinhaAtual[´CD_MES_REF´].ToString+´/´+LinhaAtual[´CD_ANO_REF´].ToString);
AdpTbNova.InsertCommand.Parameters[0].Value := DtRef;
AdpTbNova.InsertCommand.Parameters[1].Value := (I+1);
AdpTbNova.InsertCommand.Parameters[2].Value := LinhaAtual[´CD_FUNDACAO´].ToString;
AdpTbNova.InsertCommand.Parameters[3].Value := LinhaAtual[´CD_EMPRESA´].ToString;
AdpTbNova.InsertCommand.Parameters[4].Value := LinhaAtual[´CD_PLANO´].ToString;
AdpTbNova.InsertCommand.Parameters[5].Value := LinhaAtual[´CD_MATRICULA´].ToString;
AdpTbNova.InsertCommand.Parameters[6].Value := LinhaAtual[´DS_NOME´].ToString.Trim;
AdpTbNova.InsertCommand.Parameters[7].Value := LinhaAtual[´CD_DR´].ToString;
AdpTbNova.InsertCommand.Parameters[8].Value := LinhaAtual[´CD_SEXO´].ToString;
AdpTbNova.InsertCommand.Parameters[9].Value := LinhaAtual[´CD_ESTADO_CIVIL´].ToString;
AdpTbNova.InsertCommand.Parameters[10].Value := Convert.ToDateTime(LinhaAtual[´DT_NASCIMENTO´].ToString);
AdpTbNova.InsertCommand.Parameters[11].Value := LinhaAtual[´DS_NATURALIDADE´].ToString.Trim;
AdpTbNova.InsertCommand.Parameters[12].Value := LinhaAtual[´CD_UF_NATURALIDADE´].ToString;
AdpTbNova.InsertCommand.Parameters[13].Value := LinhaAtual[´CD_NACIONALIDADE´].ToString;
AdpTbNova.InsertCommand.Parameters[14].Value := LinhaAtual[´DS_NOME_PAI´].ToString;
AdpTbNova.InsertCommand.Parameters[15].Value := LinhaAtual[´DS_NOME_MAE´].ToString.Trim;
AdpTbNova.InsertCommand.Parameters[16].Value := LinhaAtual[´DS_ENDERECO´].ToString.Trim;
AdpTbNova.InsertCommand.Parameters[17].Value := LinhaAtual[´DS_NUMERO´].ToString;
AdpTbNova.InsertCommand.Parameters[18].Value := LinhaAtual[´DS_COMPLEMENTO´].ToString.Trim;
AdpTbNova.InsertCommand.Parameters[19].Value := LinhaAtual[´DS_BAIRRO´].ToString.Trim;
AdpTbNova.InsertCommand.Parameters[20].Value := LinhaAtual[´DS_CIDADE´].ToString.Trim;
AdpTbNova.InsertCommand.Parameters[21].Value := LinhaAtual[´CD_UF´].ToString;
AdpTbNova.InsertCommand.Parameters[22].Value := LinhaAtual[´CD_CEP´].ToString;
AdpTbNova.InsertCommand.Parameters[23].Value := LinhaAtual[´DS_TEL´].ToString;
AdpTbNova.InsertCommand.Parameters[24].Value := ´´;
AdpTbNova.InsertCommand.Parameters[25].Value := ´´;
AdpTbNova.InsertCommand.Parameters[26].Value := Convert.ToDateTime(LinhaAtual[´DT_ADMISSAO´].ToString);
AdpTbNova.InsertCommand.Parameters[27].Value := LinhaAtual[´CD_LOTACAO´].ToString;
AdpTbNova.InsertCommand.Parameters[28].Value := LinhaAtual[´CD_CARGO´].ToString;
AdpTbNova.InsertCommand.Parameters[29].Value := LinhaAtual[´CD_FUNCAO´].ToString;
AdpTbNova.InsertCommand.Parameters[30].Value := LinhaAtual[´CD_NIVEL_SALARIAL´].ToString;
AdpTbNova.InsertCommand.Parameters[31].Value := 0;
if LinhaAtual[´DT_DEMISSAO´].ToString <> ´´ then
begin
AdpTbNova.InsertCommand.Parameters[32].Value := ´S´;
AdpTbNova.InsertCommand.Parameters[33].Value := Convert.ToDateTime(LinhaAtual[´DT_DEMISSAO´].ToString);
end
else
begin
AdpTbNova.InsertCommand.Parameters[32].Value := ´N´;
AdpTbNova.InsertCommand.Parameters[33].Value := Nil;
end;
AdpTbNova.InsertCommand.Parameters[34].Value := LinhaAtual[´CD_MOT_DEMISSAO´].ToString;
AdpTbNova.InsertCommand.Parameters[35].Value := Nil;
AdpTbNova.InsertCommand.Parameters[36].Value := Nil;
AdpTbNova.InsertCommand.Parameters[37].Value := Convert.ToDateTime(LinhaAtual[´DT_SIT_EMPRESA´].ToString);
AdpTbNova.InsertCommand.Parameters[38].Value := LinhaAtual[´CD_BANCO´].ToString;
AdpTbNova.InsertCommand.Parameters[39].Value := LinhaAtual[´CD_AGENCIA´].ToString;
AdpTbNova.InsertCommand.Parameters[40].Value := LinhaAtual[´CD_CONTA´].ToString;
AdpTbNova.InsertCommand.Parameters[41].Value := LinhaAtual[´CD_CPF´].ToString;
AdpTbNova.InsertCommand.Parameters[42].Value := LinhaAtual[´CD_NUM_IDENT´].ToString;
AdpTbNova.InsertCommand.Parameters[43].Value := Convert.ToDateTime(LinhaAtual[´DT_EMIS_IDENT´].ToString);
AdpTbNova.InsertCommand.Parameters[44].Value := LinhaAtual[´CD_ORG_EMIS_IDENT´].ToString;
AdpTbNova.InsertCommand.Parameters[45].Value := LinhaAtual[´CD_UF_EMIS_IDENT´].ToString;
AdpTbNova.InsertCommand.Parameters[46].Value := LinhaAtual[´CD_NUM_CTPS´].ToString;
AdpTbNova.InsertCommand.Parameters[47].Value := LinhaAtual[´CD_SERIE_CTPS´].ToString;
AdpTbNova.InsertCommand.Parameters[48].Value := LinhaAtual[´CD_UF_EMIS_CTPS´].ToString;
AdpTbNova.InsertCommand.Parameters[49].Value := Nil;
AdpTbNova.InsertCommand.Parameters[50].Value := ´´;
AdpTbNova.InsertCommand.Parameters[51].Value := ´´;
AdpTbNova.InsertCommand.Parameters[52].Value := Nil;
AdpTbNova.InsertCommand.Parameters[53].Value := 0;
AdpTbNova.InsertCommand.Parameters[54].Value := 0;
AdpTbNova.InsertCommand.Parameters[55].Value := 0;
AdpTbNova.InsertCommand.Parameters[56].Value := 0;
AdpTbNova.InsertCommand.Parameters[57].Value := 0;
AdpTbNova.InsertCommand.Parameters[58].Value := 0;
AdpTbNova.InsertCommand.Parameters[59].Value := 0;
AdpTbNova.InsertCommand.Parameters[60].Value := 0;
AdpTbNova.InsertCommand.Parameters[61].Value := 0;
AdpTbNova.InsertCommand.Parameters[62].Value := ´1´;
AdpTbNova.InsertCommand.Parameters[63].Value := Nil;
Conn.Open;
AdpTbNova.InsertCommand.ExecuteNonQuery;
end;
dsTabelas.Tables[1].Clear;
AdpTbNova.SelectCommand.ExecuteReader;
AdpTbNova.Fill(dsTabelas.Tables[1]);
MessageBox.Show(´Dados Importados com sucesso!´);
Except
on Exp:Exception do
begin
MessageBox.Show(Exp.ToString);
end;
end;
finally
Conn.Close;
ProgressBar1.ResetBindings;
end;
end;

Obrigado pela atenção.


Toninhonunes
   - 11 jun 2007

Ao invés de utilizar números para os parametros, porque não usa nome? além de ser mais fácil verificar se não esta atribuindo um tipo diferente para o campo, ainda facilita você depurar o sistema.

Da maneira que está exposta aí, não dá pra saber nada o que pode estar errado.

Toninho Nunes


Knight_of_wine
   - 11 jun 2007

Bem, eu atribui os parâmetros pelo índice, por que fui recomendado a usar assim, mas eu vou trocar e ver o que acontece.

O pior é que não faço ideia de como vou conseguir fazer isso, não queria ter que desistir e fazer a aplicação em win32, meu objetivo é aprender Delphi.Net.


Knight_of_wine
   - 11 jun 2007


Citação:
Ao invés de utilizar números para os parametros, porque não usa nome? além de ser mais fácil verificar se não esta atribuindo um tipo diferente para o campo, ainda facilita você depurar o sistema.

Da maneira que está exposta aí, não dá pra saber nada o que pode estar errado.

Toninho Nunes


É eu segui sua dica e descobri o problema... realmente eu estava passando um parâmetro errado.

Agora, ´Ô Traduçãozinha´ ridícula desse Framework.

Fica a dica ae galera não peguem a versão em português do Framework.

Minha aplicação está perfeita agora, estou até dando uma boa melhorada nela tratando alguns erros.

Vivendo e aprendendo.

Muito Obrigado!

Silvio Caetano


Toninhonunes
   - 11 jun 2007

É eu segui sua dica e descobri o problema... realmente eu estava passando um parâmetro errado.

Agora, ´Ô Traduçãozinha´ ridícula desse Framework.

Fica a dica ae galera não peguem a versão em português do Framework.

Minha aplicação está perfeita agora, estou até dando uma boa melhorada nela tratando alguns erros.

Vivendo e aprendendo.

Muito Obrigado!

Silvio Caetano

Beleza, é bom aprender Delphi.net, dá pra fazer muita coisa, veja aí um website que entreguei hoje, feito em Delphi .NET 2006, ainda estou a finalizar algumas coisas, com Mysql.NET Provider.

Falowz.