Jump to content

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


set#1
 Share

Recommended Posts

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)))

Link to comment
Share on other 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)

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other 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

Link to comment
Share on other 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

Link to comment
Share on other 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
Link to comment
Share on other 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...

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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

Link to comment
Share on other 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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other 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]
Link to comment
Share on other 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.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.