set#1 Posted September 22, 2009 at 03:27 PM Report Share #288135 Posted September 22, 2009 at 03:27 PM 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 "/" Obrigado (((Peace&Love))) Link to comment Share on other sites More sharing options...
anolsi Posted September 22, 2009 at 05:12 PM Report Share #288149 Posted September 22, 2009 at 05:12 PM 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 More sharing options...
passado Posted September 22, 2009 at 08:03 PM Report Share #288180 Posted September 22, 2009 at 08:03 PM 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 More sharing options...
bruno1234 Posted September 22, 2009 at 08:14 PM Report Share #288182 Posted September 22, 2009 at 08:14 PM 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? Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
set#1 Posted September 22, 2009 at 09:24 PM Author Report Share #288205 Posted September 22, 2009 at 09:24 PM 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 More sharing options...
Pwyll Posted September 22, 2009 at 11:14 PM Report Share #288226 Posted September 22, 2009 at 11:14 PM 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 More sharing options...
ribeiro55 Posted September 23, 2009 at 01:27 AM Report Share #288240 Posted September 23, 2009 at 01:27 AM 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 More sharing options...
set#1 Posted September 23, 2009 at 07:49 AM Author Report Share #288247 Posted September 23, 2009 at 07:49 AM 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 More sharing options...
ribeiro55 Posted September 23, 2009 at 12:32 PM Report Share #288274 Posted September 23, 2009 at 12:32 PM 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 More sharing options...
set#1 Posted September 23, 2009 at 01:09 PM Author Report Share #288283 Posted September 23, 2009 at 01:09 PM 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 More sharing options...
ribeiro55 Posted September 23, 2009 at 01:14 PM Report Share #288285 Posted September 23, 2009 at 01:14 PM 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 More sharing options...
set#1 Posted September 23, 2009 at 01:40 PM Author Report Share #288288 Posted September 23, 2009 at 01:40 PM 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 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now