Dúvidas em Visual Basic

11 respostas
L

Boas pessoal,
Alguém me podia dizer como faço o if ternário neste código? Dá-me este erro “A conversão da cadeia “” para o tipo ‘Date’ não é válida.”

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.QuartosTableAdapter.Insert(TxtNumerodoQuarto.Text, TxtCheckIn.Text, TxtCheckOut.Text, TxtCheckOutTardio.Text, TxtIDReservas.Text)

Me.QuartosTableAdapter.Update(Ho_GestDataSet.Quartos)

MsgBox(“Guardado com Sucesso!”)

Me.QuartosTableAdapter.Fill(Me.Ho_GestDataSet.Quartos)
End Sub

End Class

11 Respostas

leonardoterrao

Bem vindo ao fórum Lameira :smiley:

da uma olhada ai !
http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Lenin666

Bom, não sei se eu entendi bem…, but!

tem um if no vb que é equivalente ao (varString.equals("S") ? true : false) do java, c e mais algumas lps q usam essa sintaxe, que é o iif do vb.

iif(varString, "S", true, false)

Pelo oq eu entendi do seu problema, vc tem que tratar uma data certo? Se eu não me engano, tem um “format” que trata data bem bacaninha, acho que é o “formatDate”, que seria equivalente ao “SimpleDateFormat”.

Se não for nada disso, tenta explicar melhor seu problema.

L

Pois eu não estou a conseguir porque tem um erro que ele não reconhece a data,sabe me dizer como é que eu uso esse format date naquele código que enviei no primeiro post?

L

Eu agora tentei pôr assim o código “Me.QuartosTableAdapter.Insert(TxtNumerodoQuarto.Text, If(TxtCheckIn.Text = “”, Nothing, TxtCheckIn.Text), If(TxtCheckOut.Text = “”, Nothing, TxtCheckOut.Text), If(TxtCheckOutTardio.Text = “”, Nothing, TxtCheckOutTardio.Text), If(TxtIDReservas.Text = “”, Nothing, TxtIDReservas.Text))”, mas também não deu nada

Lenin666

Vixi, não tenho o vb instalado mas tenta algo mais ou menos assim:

Lenin666

A…,

mas ai não vai rolar mesmo.

o comando é “iif”, tem 2 i´s - (iif)

Tenta isso, se não for isso não sei como ajudar:

Me.QuartosTableAdapter.Insert(TxtNumerodoQuarto.Text, IIf(TxtCheckIn.Text = "", Nothing, TxtCheckIn.Text), IIf(TxtCheckOut.Text = "", Nothing, TxtCheckOut.Text), IIf(TxtCheckOutTardio.Text = "", Nothing, TxtCheckOutTardio.Text), IIf(TxtIDReservas.Text = "", Nothing, TxtIDReservas.Text))
L

Fiz como você me disse mas agora dá-me este erro “A conversão da cadeia “” para o tipo ‘Integer’ não é válida.”

Lenin666

Algum desses campos ai deveria estar mandando um inteiro e vc tah passando string…

L

Já fiz isto de forma mais completa e sem ser aldrabada,fiz o seguinte código:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim NumeroQuarto As Integer

Dim Checkin As DateTime

Dim CheckOut As DateTime

Dim CheckOutTardio As DateTime

Dim IdReservas As Integer

If TxtNumerodoQuarto.Text = “” Then NumeroQuarto = Nothing Else NumeroQuarto = TxtNumerodoQuarto.Text

If TxtCheckIn.Text = “” Then Checkin = Nothing Else Checkin = TxtCheckIn.Text

If TxtCheckOut.Text = “” Then CheckOut = Nothing Else CheckOut = TxtCheckOut.Text

If TxtCheckOutTardio.Text = “” Then CheckOutTardio = Nothing Else CheckOutTardio = TxtCheckOutTardio.Text

If TxtIDReservas.Text = “” Then IdReservas = Nothing Else IdReservas = TxtIDReservas.Text

Me.QuartosTableAdapter.Insert(NumeroQuarto, Checkin, CheckOut, CheckOutTardio, IdReservas)

Me.QuartosTableAdapter.Update(_Ho_GestDataSet.Quartos)

MsgBox(“Guardado com Sucesso!”)

Me.QuartosTableAdapter.Fill(Me._Ho_GestDataSet.Quartos)
End Sub

End Class

L

Diga-me só uma coisa ali no Chechout tardio tenho que meter sempre valores ou no ID reservas,sabe como eu faço para deixar de ser obrigatório meter lá valores?

Lenin666

nossa, não sei se é a barreira do idioma, mas a explicação está bem complicada.

Olha, a regra de negócio quem define é você, se tem que ser obrigatório, quem define isso é você, e acredito que isso deva ser feito na view.

Agora se vc quiser tratar isso no código, acho q vc deveria inicializar suas variáveis com um valor default.

E se eu entendi a respeito de forçar a inserção de alguma informação, acho q vc deveria “validar” antes de inserir os dados na base.

Tipo algo assim:

If TxtNumerodoQuarto.Text = "" Then 
      NumeroQuarto = 0 
Else 
     NumeroQuarto = TxtNumerodoQuarto.Text
End if

Ou

If TxtNumerodoQuarto.Text = "" Then 
      msgbox "Favor inserir um valor para o número do quarto"
      exit sub
Else 
     NumeroQuarto = TxtNumerodoQuarto.Text
End if

Entendeu?

Criado 6 de junho de 2012
Ultima resposta 6 de jun. de 2012
Respostas 11
Participantes 3