• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Slammer

[Dúvida Urgente] DateTime em C#

14 mensagens neste tópico

Boa tarde pessoal, venho postar aqui mais uma duvida (espero que seja a ultima deste projecto que estou a fazer) sobre conversão de Strings para datetime.

eu tenho este código para converter o que tenho nos datetimepickers para o formato datetime:

                string strdatacarga = dateTimePickerCarga.Text;

                string strdataorig = dateTimePickerDataOrig.Text;

                string strdatavenc = dateTimePickerDataVenc.Text;

                DateTime datacarga = DateTime.Parse(strdatacarga);

                DateTime dataorig = DateTime.Parse(strdataorig);

                DateTime datavenc = DateTime.Parse(strdatavenc);

isto funciona, mas com um problema, só funciona se eu puser uma data menor ou igual a 12-07-2008, o que é muito estranho.

Alguém me poderia ajudar?

fiquem bem, abraço.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Menos ou igual como?

Dá aí um exemplo de uma data que não funcione.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Menos ou igual como?

Dá aí um exemplo de uma data que não funcione.

por exemplo: 13-07-2008 já não dá.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epá ninguém converte o que está num dateTimePicker para DateTime usando o texto... a propriedade Value está lá para alguma coisa não? (ps: hj tou com mau feitio :))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epá ninguém converte o que está num dateTimePicker para DateTime usando o texto... a propriedade Value está lá para alguma coisa não? (ps: hj tou com mau feitio :))

Mesmo que use Datetimepicker.value.tostrin() na query.

Ele dá-me sempre o mesmo erro: "There was an error in a part of the date format. [ Expression (if known) = ]"

(Isto com a data de 17-07-2008)

Mas se eu puser 12-07-2008 inferior, ele grava sem problemas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ele refere-se a usares antes.

DateTime datacarga = dateTimePickerCarga.Value;

Em relação ao erro de passar da String para DateTime, deve ser por provavelmente estás a usar a cultura Americana, ou seja, mês-dia-ano.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ele refere-se a usares antes.

DateTime datacarga = dateTimePickerCarga.Value;

Em relação ao erro de passar da String para DateTime, deve ser por provavelmente estás a usar a cultura Americana, ou seja, mês-dia-ano.

Deu erro na mesma e nas regional settings está em português. Isto é no mínimo estranho lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como tens o código agora? E que erro é que deu?

"There was an error in a part of the date format. [ Expression (if known) = ]"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"There was an error in a part of the date format. [ Expression (if known) = ]"

Epá, achas que apenas com esta frase uma pessoa tem capacidade para saber o que poderá ser o erro?

Convém ver como é que está o código, e não digo 1 linha, refiro ao bloco de lógica.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epá, achas que apenas com esta frase uma pessoa tem capacidade para saber o que poderá ser o erro?

Convém ver como é que está o código, e não digo 1 linha, refiro ao bloco de lógica.

Sorry, aqui vai o código, ou parte dele:

DateTime datacarga = dateTimePickerCarga.Value;
DateTime dataorig = dateTimePickerDataOrig.Value;
DateTime datavenc = dateTimePickerDataVenc.Value;

string sqlQuery = "UPDATE DocumentosCab SET " +
                                  "  codtpdoc = '" + codtpdoc + "',descrtpdoc = '" + descrtpdocComboBox.Text + "', codcl = '" + codcltextBox.Text + "', nome = '" + nomeTextBox.Text + "', dataorig = '" + dataorig.ToShortDateString() + "', datavenc = '" + datavenc.ToShortDateString() + "', localcarga = '" + localcargaTextBox.Text + "', localdescarga = '" + localdescargaTextBox.Text + "', datacarga = '" + datacarga.ToShortDateString() + "', matricula = '" + matriculaTextBox.Text + "', expedicao = '" + expedicaoTextBox.Text + "', baseinc = '" + novoBaseinc + "', totaldoc = '" + novoTotaldoc + "' where cabstamp = '" + cabStampTextBox.Text + "' and coddoc = '" + coddocTextBox.Text + "' and descrtpdoc = '" + descrtpdocComboBox.Text + "'"; 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O DateTime do SQL é diferente do DateTime do C#, se usares parâmetros além de mais seguro (evitar por exemplo SQLInjection) deixa de dar esses problemas

aqui tens um exemplo

DateTime dateVal = DateTime.Now;

using (SqlConnection conn = new SqlConnection(_connectionString))
{
    conn.Open();

    string sql = "INSERT INTO Table (col1) VALUES (@dateVal)";
    //string sql = "UPDATE Table SET col1 = @dateVal";

    SqlCommand cmd = new SqlCommand(sql, conn);

    // Add the parameters
    cmd.Parameters.Add(new SqlParameter("@dateVal", dateVal));
    cmd.ExecuteNonQuery();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora