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

set#1

Conversion from string "" to type 'Date' is not valid

12 mensagens neste tópico

Estou a tentar introduzir dados numa tabela.

O campo me.txtNID.Text.ToString (onde entra o identificador do paciente) tem o seguinte formato: CodUnidadeSanitaria/Ano/NID por exemplo 11010101/09/001. Ao adicionar ele da erro:

Conversion from string "" to type 'Date' is not valid.

Se coloco apenas 001 ou algo como 19230921, ele grava na BD (Server 2005)

O campo na BD 'e nvarchar(50)

Como resolver, porque acho que o problema esta nas "/"  :wallbash:

Obrigado

(((Peace&Love)))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não estou em erro nvarchar só aceita numéricos, logo essa barra não se enquadra, e acho que o faz tentar um cast. Mas não tenho a certeza. Experimenta utilizar antes o varchar(50)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não estou em erro nvarchar só aceita numéricos, logo essa barra não se enquadra, e acho que o faz tentar um cast. Mas não tenho a certeza. Experimenta utilizar antes o varchar(50)

nvarchar penso que aceita numeros e letras o problema penso estar mesmo no "/" que ele assume como formato de data, tenta separar pelo "-" ver se da erro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se o campo na BD é nvarchar, e estás a ler o valor de uma caixa de texto, q é uma string, donde vem um erro relacionado com Date?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não estou em erro nvarchar só aceita numéricos, logo essa barra não se enquadra, e acho que o faz tentar um cast. Mas não tenho a certeza. Experimenta utilizar antes o varchar(50)

Fiz o cast assim: Val (me.txtNID.Text.ToString) e tambem nao deu nada.

Se o campo na BD é nvarchar, e estás a ler o valor de uma caixa de texto, q é uma string, donde vem um erro relacionado com Date?

Tambem nao consegui entender porque!!!

nvarchar penso que aceita numeros e letras o problema penso estar mesmo no "/" que ele assume como formato de data, tenta separar pelo "-" ver se da erro

Vou tentar deste modo para ver o que da.

O caso 'e que como seria um aproveitamento de dados ja existentes, os NID's ja stao com o separador "/"....mas 1o vou esperimentar com o " - "

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A diferença entre nvarchar e varchar é que o primeiro é usado para gravar dados em unicode no caso de aplicacoes multilanguage.

Qual é o type da variavel para onde estás a enviar o me.txtNID.Text.ToString ?

A mensagem Conversion from string "" to type 'Date' is not valid, diz tudo estás a passar uma informacao string (me.txtNID.Text.ToString) para algo do type Date. Exemplo.... Algo deste tipo está a acontecer:

Dim mData as date
mData = me.txtNID.text.tostring

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é a string que estás a tentar passar para data?

Se a string estiver num formato de data separado por "/" ou "-" consegues sacar uma data de uma string com o CDate.

O que o erro sugere é um problema do lado do teu código, depois de sacar informação da base de dados (será?)

Terás de expor mais conteúdo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é a string que estás a tentar passar para data?

A ideia nao 'e passar a string para data porque o valor nao 'e data mas sim string.

Qual é o type da variavel para onde estás a enviar o me.txtNID.Text.ToString ?

A mensagem Conversion from string "" to type 'Date' is not valid, diz tudo estás a passar uma informacao string (me.txtNID.Text.ToString) para algo do type Date.

Olha, o formato: CodUnidadeSanitaria/Ano/NID, e o tipo de dado que introduzo no campo me.txtNID.Text.ToString 'e algo assim: 11010101/09/001

Na BD ele deve entrar num campo nvarchar(50)

O que estava a acontecer 'e que ele reconhece "/" como separador de data (Configuracoes do Windows no Control Panel - Regional and Language Options). Troquei o separador de data para " - "

Se tiverem alguma outra dica agradeço caso contrario essa forma funcionou.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ideia nao 'e passar a string para data porque o valor nao 'e data mas sim string.

Alguma coisa estás a tentar passar para data ou ele não dizia Conversion from string "" to type 'Date' is not valid.

Apesar de já estar resolvido, mostra algum código e já agora o desenho dessa tabela no SQL porque há aí qualquer coisa estranha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguma coisa estás a tentar passar para data ou ele não dizia Conversion from string "" to type 'Date' is not valid.

Apesar de já estar resolvido, mostra algum código e já agora o desenho dessa tabela no SQL porque há aí qualquer coisa estranha.

Private Sub btGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btGravar.Click
        Dim pacientesDTA As New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter
        pacientesDTA = New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter

        If pacientesDTA.InsertPaciente(Me.cbUS.Text, Me.txtDataAbertura.Text, Me.txtNrOrdem.Text, Me.txtNID.Text.ToString, Me.txtNome.Text, Me.txtSexo.Text, Me.txtIdade.Text, Me.txtIdentific.Text, Me.cbDistrito.Text, Me.cbBairro.Text, Me.txtCelQuart.Text, Me.txtAvenida.Text, Me.cbServico.Text, Me.cbReferencia.Text, Me.txtDataNasc.Text, Me.txtApelido.Text, Me.cbFuncionario.Text, Me.txtDataDiag.Text, False, Me.cbTipoPac.Text) Then
            MsgBox("Paciente registado com sucesso", MsgBoxStyle.Information, "Adicionou Paciente")
       Else
            MsgBox("Verifique os dados se estao correctos.", MsgBoxStyle.Critical, "Erro")
        End If
    End Sub

USE [bD_TL2009]
GO
/****** Object:  Table [dbo].[t_paciente]    Script Date: 09/23/2009 14:59:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[t_paciente](
[hdd] [nvarchar](50) NULL,
[dataabertura] [datetime] NULL,
[nrOrdemMensal] [nvarchar](50) NULL,
[nid] [nvarchar](50) NOT NULL,
[nome] [nvarchar](50) NULL,
[sexo] [nvarchar](50) NULL,
[idade] [float] NULL,
[identificacao] [nvarchar](50) NULL,
[coddistrito] [nvarchar](50) NULL,
[codbairro] [nvarchar](50) NULL,
[celula] [nvarchar](50) NULL,
[avenida] [nvarchar](50) NULL,
[codproveniencia] [nvarchar](50) NULL,
[designacaoprov] [nvarchar](50) NULL,
[emtarv] [bit] NOT NULL DEFAULT ((0)),
[datainiciotarv] [datetime] NULL,
[codregime] [nvarchar](50) NULL,
[codestado] [nvarchar](50) NULL,
[datasaidatarv] [datetime] NULL,
[datanasc] [datetime] NULL,
[apelido] [nvarchar](50) NULL,
[meses] [int] NULL DEFAULT ((0)),
[codfuncionario] [int] NULL,
[datadiagnostico] [datetime] NULL,
[aconselhado] [bit] NOT NULL DEFAULT ((0)),
[tipopaciente] [nvarchar](50) NULL,
[cirurgias] [nvarchar](30) NULL,
[transfusao] [nvarchar](30) NULL,
[referidocd] [bit] NOT NULL DEFAULT ((0)),
[situacaohiv] [nvarchar](50) NULL,
[estadiooms] [nvarchar](50) NULL,
[emtratamentotb] [bit] NOT NULL DEFAULT ((0)),
[cotrimoxazol] [bit] NOT NULL DEFAULT ((0)),
[vitamina] [bit] NOT NULL DEFAULT ((0)),
[antibioticos] [bit] NOT NULL DEFAULT ((0)),
[antifugicos] [bit] NOT NULL DEFAULT ((0)),
[observacao] [ntext] NULL,
[CodUniSan] [nvarchar](255) NULL,
[Codigoproveniencia] [nvarchar](255) NULL,
[DataCD] [datetime] NULL,
[quaisantibioticos] [nvarchar](255) NULL,
[quaiscotrimoxazol] [nvarchar](255) NULL,
[quaisvitamina] [nvarchar](255) NULL,
[quaisantifugicos] [nvarchar](255) NULL,
[numerotarv] [nvarchar](255) NULL,
[upsize_ts] [timestamp] NULL,
CONSTRAINT [aaaaat_paciente_PK] PRIMARY KEY NONCLUSTERED 
(
[nid] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A única coisa que posso concluir é que os dados com que estás a alimentar o Insert não estejam por a ordem correcta e estejas a tentar meter os dados que não eram suposto ser data, no campo de data.

Nunca trabalhei com DataAdapters mas o insert não tem Intellisense? Só para poderes dar uma olhadela ao datatype que é pedido em cada campo e vais ver que num que não é suposto ser data, deve estar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, vendo o Intellisense todos campos estão a entrar com suas propriedades correctas...acredito que as configuracoes do Windows deve ter interferido, ou caso não eish...

Mas como disse agora ta funcionar, acredito que não cria nenhum conflito depois...

Obrigado

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