Bom estou cadastrando informação ao SQLServer puxando informações de outro banco.
Bom Puxar as informações não é o problema, mas sim inserir no novo banco. E agora me deparei com uma informação no banco(Datetime), precisar se inserido com deixado vazio, não posso cadastrar a data se realmente n existir.
quando eu puxo as informações de outro banco preencho os objetos e add em uma coleção de seu tipo estabelecido, e o codigo é este.:
private Pessoa PreencherObj(DataRow d)
{
Pessoa pessoa = new Pessoa
{
Codigo = long.Parse(Variados.returnZeroCaseVazio(d["Codigo"].ToString())),
DataAtualizacao = (String.IsNullOrEmpty(d["DataAtualizacao"].ToString()) ? DateTime.Now.Date : Date.GetDateTimeFromString(d["DataAtualizacao"].ToString())),
Nome = Variados.returnTracoCaseVazio(d["Nome"].ToString()),
NomeFantasia = Variados.returnTracoCaseVazio(d["NomeFantasia"].ToString()),
DataNascimento = (String.IsNullOrEmpty(d["DataNascimento"].ToString()) ? DateTime.Now.Date : Date.GetDateTimeFromString(d["DataNascimento"].ToString())),
TipoDoc = Variados.returnTracoCaseVazio(d["TipoDoc"].ToString()),
CNPJ = Variados.returnTracoCaseVazio(d["CNPJ"].ToString()),
IdEstrangeiro = Variados.returnTracoCaseVazio(d["IdEstrangeiro"].ToString()),
CCE = Variados.returnTracoCaseVazio(d["CCE"].ToString()),
RG = Variados.returnTracoCaseVazio(d["RG"].ToString()),
Endereco = Variados.returnTracoCaseVazio(d["Endereco"].ToString()),
Numero = Variados.returnTracoCaseVazio(d["Numero"].ToString()),
Complemento = Variados.returnTracoCaseVazio(d["Complemento"].ToString()),
Bairro = Variados.returnTracoCaseVazio(d["Bairro"].ToString()),
CEP = Variados.returnTracoCaseVazio(d["CEP"].ToString()),
CodigoMunicipio = long.Parse(Variados.returnZeroCaseVazio(d["CodigoMunicipio"].ToString())),
Cidade = Variados.returnTracoCaseVazio(d["Cidade"].ToString()),
UF = Variados.returnTracoCaseVazio(d["UF"].ToString()),
CodigoPais = Variados.returnTracoCaseVazio(d["CodigoPais"].ToString()),
NomePais = Variados.returnTracoCaseVazio(d["NomePais"].ToString()),
DDD = int.Parse(Variados.returnZeroCaseVazio(d["DDD"].ToString())),
Fone = Variados.returnTracoCaseVazio(d["Fone"].ToString()),
Celular = Variados.returnTracoCaseVazio(d["Celular"].ToString()),
Email = Variados.returnTracoCaseVazio(d["Celular"].ToString()),
HomePage = Variados.returnTracoCaseVazio(d["HomePage"].ToString()),
EstadoCivil = int.Parse(Variados.returnZeroCaseVazio(d["EstadoCivil"].ToString())),
NomeMae = Variados.returnTracoCaseVazio(d["NomeMae"].ToString()),
NomePai = Variados.returnTracoCaseVazio(d["NomePai"].ToString()),
LocalTrabalho = Variados.returnTracoCaseVazio(d["LocalTrabalho"].ToString()),
FoneTrabalho = Variados.returnTracoCaseVazio(d["FoneTrabalho"].ToString()),
Profissao = Variados.returnTracoCaseVazio(d["Profissao"].ToString()),
LimiteCredito = float.Parse(Variados.returnTracoCaseVazio(d["LimiteCredito"].ToString())),
ClassificacaoFinanceira = Variados.returnTracoCaseVazio(d["ClassificacaoFinanceira"].ToString()),
ClassificacaoVenda = Variados.returnTracoCaseVazio(d["ClassificacaoVenda"].ToString()),
DiaVenc = int.Parse(Variados.returnZeroCaseVazio(d["DiaVenc"].ToString())),
Renda = float.Parse(Variados.returnZeroCaseVazio(d["Renda"].ToString())),
ValorMensal = float.Parse(Variados.returnZeroCaseVazio(d["ValorMensal"].ToString())),
ChkSalario = Variados.returnTracoCaseVazio(d["ChkSalario"].ToString()),
DataContrato = (String.IsNullOrEmpty(d["DataContrato"].ToString()) ? DateTime.Now.Date : Date.GetDateTimeFromString(d["DataContrato"].ToString())),
Referencia01 = Variados.returnTracoCaseVazio(d["Referencia01"].ToString()),
FoneReferencia01 = Variados.returnTracoCaseVazio(d["FoneReferencia01"].ToString()),
Referencia02 = Variados.returnTracoCaseVazio(d["Referencia02"].ToString()),
FoneReferencia02 = Variados.returnTracoCaseVazio(d["FoneReferencia02"].ToString()),
Referencia03 = Variados.returnTracoCaseVazio(d["Referencia03"].ToString()),
FoneReferencia03 = Variados.returnTracoCaseVazio(d["FoneReferencia03"].ToString()),
Contato1 = Variados.returnTracoCaseVazio(d["Contato1"].ToString()),
Contato2 = Variados.returnTracoCaseVazio(d["Contato2"].ToString()),
CodigoRota = long.Parse(Variados.returnZeroCaseVazio(d["CodigoRota"].ToString())),
CodigoTipo = long.Parse(Variados.returnZeroCaseVazio(d["CodigoTipo"].ToString())),
TipoCliente = int.Parse(Variados.returnZeroCaseVazio(d["TipoCliente"].ToString())),
TipoExtrangeiro = int.Parse(Variados.returnZeroCaseVazio(d["TipoExtrangeiro"].ToString())),
TipoFornecedor = int.Parse(Variados.returnZeroCaseVazio(d["TipoFornecedor"].ToString())),
TipoFuncionario = int.Parse(Variados.returnZeroCaseVazio(d["TipoFuncionario"].ToString())),
TipoParceiro = int.Parse(Variados.returnZeroCaseVazio(d["TipoParceiro"].ToString())),
TipoTecnico = int.Parse(Variados.returnZeroCaseVazio(d["TipoTecnico"].ToString())),
TipoProdutorRural = int.Parse(Variados.returnZeroCaseVazio(d["TipoProdutorRural"].ToString())),
TipoVendedor = int.Parse(Variados.returnZeroCaseVazio(d["TipoVendedor"].ToString())),
Desconto10 = float.Parse(Variados.returnZeroCaseVazio(d["Desconto10"].ToString())),
Desconto01 = float.Parse(Variados.returnZeroCaseVazio(d["Desconto01"].ToString())),
Desconto02 = float.Parse(Variados.returnZeroCaseVazio(d["Desconto02"].ToString())),
Desconto03 = float.Parse(Variados.returnZeroCaseVazio(d["Desconto03"].ToString())),
Desconto04 = float.Parse(Variados.returnZeroCaseVazio(d["Desconto04"].ToString())),
Desconto10c = float.Parse(Variados.returnZeroCaseVazio(d["Desconto10c"].ToString())),
Desconto01c = float.Parse(Variados.returnZeroCaseVazio(d["Desconto01c"].ToString())),
Desconto02c = float.Parse(Variados.returnZeroCaseVazio(d["Desconto02c"].ToString())),
Desconto03c = float.Parse(Variados.returnZeroCaseVazio(d["Desconto03c"].ToString())),
Desconto04c = float.Parse(Variados.returnZeroCaseVazio(d["Desconto04c"].ToString())),
ContribuinteICMS = int.Parse(Variados.returnZeroCaseVazio(d["ContribuinteICMS"].ToString())),
OptanteSN = int.Parse(Variados.returnZeroCaseVazio(d["OptanteSN"].ToString())),
Requisicao = Variados.returnTracoCaseVazio(d["Requisicao"].ToString()),
Inativo = int.Parse(Variados.returnTracoCaseVazio(d["Inativo"].ToString())),
Observacao = Variados.returnTracoCaseVazio(d["Observacao"].ToString())
};
return pessoa;
}
depois então mando para um “FOREACH”, onde existe um insert para inserir uma informação de cada vez e meu insert é este.
public int Insert(Pessoa modal)
{
int ret = 0;
using (SqlCommand cmd = this.connSqlServer.Find().CreateCommand())
{
cmd.CommandType = CommandType.Text;
string Campos = "@Codigo, @DataAtualizacao, @Nome, @NomeFantasia, @DataNascimento, @TipoDoc, @CNPJ, @IdEstrangeiro, @CCE, @RG, "
+ "@Endereco, @Numero, @Complemento, @Bairro, @CEP, @CodigoMunicipio, @Cidade, @UF, @CodigoPais, @NomePais, "
+ "@DDD, @Fone, @Celular, @Email, @HomePage, @EstadoCivil, @NomeMae, @NomePai, @LocalTrabalho, @FoneTrabalho, "
+ "@Profissao, @LimiteCredito, @ClassificacaoFinanceira, @ClassificacaoVenda, @DiaVenc, @Renda, @ValorMensal, @ChkSalario, @DataContrato, @Referencia01, "
+ "@FoneReferencia01, @Referencia02, @FoneReferencia02, @Referencia03, @FoneReferencia03, @Contato1, @Contato2, @CodigoRota, @CodigoTipo, "
+ "@TipoCliente, @TipoExtrangeiro, @TipoFornecedor, @TipoFuncionario, @TipoParceiro, @TipoTecnico, @TipoProdutorRural, @TipoVendedor, @Desconto10, @Desconto01, "
+ "@Desconto02, @Desconto03, @Desconto04, @Desconto10c, @Desconto01c, @Desconto02c, @Desconto03c, @Desconto04c, @ContribuinteICMS, @OptanteSN, "
+ "@Requisicao, @Inativo, @Observacao";
cmd.CommandText = "INSERT INTO Pessoas (" + Attr + ") VALUES (" + Campos + ")";
this.preencherCampos(cmd, modal);
ret = cmd.ExecuteNonQuery();
}
return ret;
}
deve ter percebido que existe um preencherCampos, é este:
private void preencherCampos(SqlCommand cmd, Pessoa modal) { cmd.Parameters.Add("@Codigo", SqlDbType.BigInt).Value = modal.Codigo; cmd.Parameters.Add("@DataAtualizacao", SqlDbType.DateTime).Value = modal.DataAtualizacao; cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = modal.Nome; cmd.Parameters.Add("@NomeFantasia", SqlDbType.VarChar).Value = modal.NomeFantasia; cmd.Parameters.Add("@DataNascimento", SqlDbType.Date).Value = modal.DataNascimento; cmd.Parameters.Add("@TipoDoc", SqlDbType.VarChar, 4).Value = modal.TipoDoc; cmd.Parameters.Add("@CNPJ", SqlDbType.VarChar, 14).Value = modal.CNPJ; cmd.Parameters.Add("@IDEstrangeiro", SqlDbType.VarChar, 20).Value = modal.IdEstrangeiro; cmd.Parameters.Add("@CCE", SqlDbType.VarChar, 20).Value = modal.CCE; cmd.Parameters.Add("@RG", SqlDbType.VarChar, 20).Value = modal.RG; cmd.Parameters.Add("@Endereco", SqlDbType.VarChar, 20).Value = modal.Endereco; cmd.Parameters.Add("@Numero", SqlDbType.VarChar, 10).Value = modal.Numero; cmd.Parameters.Add("@Complemento", SqlDbType.VarChar, 50).Value = modal.Complemento; cmd.Parameters.Add("@Bairro", SqlDbType.VarChar, 50).Value = modal.Bairro; cmd.Parameters.Add("@CEP", SqlDbType.VarChar, 8).Value = modal.CEP; cmd.Parameters.Add("@CodigoMunicipio", SqlDbType.BigInt).Value = modal.CodigoMunicipio; cmd.Parameters.Add("@Cidade", SqlDbType.VarChar, 50).Value = modal.Cidade; cmd.Parameters.Add("@UF", SqlDbType.Char, 2).Value = modal.UF; cmd.Parameters.Add("@CodigoPais", SqlDbType.VarChar, 4).Value = modal.CodigoPais; cmd.Parameters.Add("@NomePais", SqlDbType.VarChar, 50).Value = modal.NomePai; cmd.Parameters.Add("@DDD", SqlDbType.Int).Value = modal.DDD; cmd.Parameters.Add("@Fone", SqlDbType.VarChar, 14).Value = modal.Fone; cmd.Parameters.Add("@Celular", SqlDbType.VarChar, 14).Value = modal.Celular; cmd.Parameters.Add("@Email", SqlDbType.VarChar, 60).Value = modal.Email; cmd.Parameters.Add("@HomePage", SqlDbType.VarChar, 60).Value = modal.HomePage; cmd.Parameters.Add("@EstadoCivil", SqlDbType.Int).Value = modal.EstadoCivil; cmd.Parameters.Add("@NomeMae", SqlDbType.VarChar, 60).Value = modal.NomeMae; cmd.Parameters.Add("@NomePai", SqlDbType.VarChar, 60).Value = modal.NomePai; cmd.Parameters.Add("@LocalTrabalho", SqlDbType.VarChar, 60).Value = modal.LocalTrabalho; cmd.Parameters.Add("@FoneTrabalho", SqlDbType.VarChar, 14).Value = modal.FoneTrabalho; cmd.Parameters.Add("@Profissao", SqlDbType.VarChar, 30).Value = modal.Profissao; cmd.Parameters.Add("@LimiteCredito", SqlDbType.Float).Value = modal.LimiteCredito; cmd.Parameters.Add("@ClassificacaoFinanceira", SqlDbType.Char, 1).Value = modal.ClassificacaoFinanceira; cmd.Parameters.Add("@ClassificacaoVenda", SqlDbType.Char, 1).Value = modal.ClassificacaoVenda; cmd.Parameters.Add("@DiaVenc", SqlDbType.Int).Value = modal.DiaVenc; cmd.Parameters.Add("@Renda", SqlDbType.Float).Value = modal.Renda; cmd.Parameters.Add("@ValorMensal", SqlDbType.Float).Value = modal.ValorMensal; cmd.Parameters.Add("@ChkSalario", SqlDbType.Char, 1).Value = modal.ChkSalario; cmd.Parameters.Add("@DataContrato", SqlDbType.DateTime).Value = modal.DataContrato; cmd.Parameters.Add("@Referencia01", SqlDbType.VarChar, 50).Value = modal.Referencia01; cmd.Parameters.Add("@FoneReferencia01", SqlDbType.VarChar, 14).Value = modal.FoneReferencia01; cmd.Parameters.Add("@Referencia02", SqlDbType.VarChar, 50).Value = modal.Referencia02; cmd.Parameters.Add("@FoneReferencia02", SqlDbType.VarChar, 14).Value = modal.FoneReferencia02; cmd.Parameters.Add("@Referencia03", SqlDbType.VarChar, 50).Value = modal.Referencia03; cmd.Parameters.Add("@FoneReferencia03", SqlDbType.VarChar, 14).Value = modal.FoneReferencia03; cmd.Parameters.Add("@Contato1", SqlDbType.VarChar, 50).Value = modal.Contato1; cmd.Parameters.Add("@Contato2", SqlDbType.VarChar, 50).Value = modal.Contato2; cmd.Parameters.Add("@CodigoRota", SqlDbType.BigInt).Value = modal.CodigoRota; cmd.Parameters.Add("@CodigoTipo", SqlDbType.BigInt).Value = modal.CodigoTipo; cmd.Parameters.Add("@TipoCliente", SqlDbType.Int).Value = modal.TipoCliente; cmd.Parameters.Add("@TipoExtrangeiro", SqlDbType.Int).Value = modal.TipoExtrangeiro; cmd.Parameters.Add("@TipoFornecedor", SqlDbType.Int).Value = modal.TipoExtrangeiro; cmd.Parameters.Add("@TipoFuncionario", SqlDbType.Int).Value = modal.TipoFuncionario; cmd.Parameters.Add("@TipoParceiro", SqlDbType.Int).Value = modal.TipoParceiro; cmd.Parameters.Add("@TipoTecnico", SqlDbType.Int).Value = modal.TipoTecnico; cmd.Parameters.Add("@TipoProdutorRural", SqlDbType.Int).Value = modal.TipoProdutorRural; cmd.Parameters.Add("@TipoVendedor", SqlDbType.Int).Value = modal.TipoVendedor; cmd.Parameters.Add("@Desconto10", SqlDbType.Float).Value = modal.Desconto10; cmd.Parameters.Add("@Desconto01", SqlDbType.Float).Value = modal.Desconto01; cmd.Parameters.Add("@Desconto02", SqlDbType.Float).Value = modal.Desconto02; cmd.Parameters.Add("@Desconto03", SqlDbType.Float).Value = modal.Desconto03; cmd.Parameters.Add("@Desconto04", SqlDbType.Float).Value = modal.Desconto04; cmd.Parameters.Add("@Desconto10c", SqlDbType.Float).Value = modal.Desconto10c; cmd.Parameters.Add("@Desconto01c", SqlDbType.Float).Value = modal.Desconto01c; cmd.Parameters.Add("@Desconto02c", SqlDbType.Float).Value = modal.Desconto02c; cmd.Parameters.Add("@Desconto03c", SqlDbType.Float).Value = modal.Desconto03c; cmd.Parameters.Add("@Desconto04c", SqlDbType.Float).Value = modal.Desconto04c; cmd.Parameters.Add("@ContribuinteICMS", SqlDbType.Int).Value = modal.ContribuinteICMS; cmd.Parameters.Add("@OptanteSN", SqlDbType.Int).Value = modal.OptanteSN; cmd.Parameters.Add("@Requisicao", SqlDbType.Char, 1).Value = modal.Requisicao; cmd.Parameters.Add("@Inativo", SqlDbType.Int).Value = modal.Inativo; cmd.Parameters.Add("@Observacao", SqlDbType.Text).Value = modal.Observacao; }
Então meu problema é que estão vindo informações de datas vazias e não estou conseguindo preencher o objetos, pois ele retorna um erro
já dei uma pesquisada sobre valores nulos par datas e acabei mudando até meu objeto pessoa
public DateTime? DataContrato
{
get; set;
}
todos que eram data eu coloquei assim com o “?” para deixar o meu encapsulamento receber nulo
Se tiver alguma coisa errada ou com definições erradas, gostaria muito de receber orientações…