Foros del Web » Programación para mayores de 30 ;) » .NET »

VB.NET: Conversion from string...

Estas en el tema de VB.NET: Conversion from string... en el foro de .NET en Foros del Web. Bueno tengo un programa que crea un objeto, le pasa los atributos, y este los copia a una base de datos. Lo hice sin utilizar ...
  #1 (permalink)  
Antiguo 04/11/2006, 12:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 86
Antigüedad: 17 años, 6 meses
Puntos: 7
VB.NET: Conversion from string...

Bueno tengo un programa que crea un objeto, le pasa los atributos, y este los copia a una base de datos.
Lo hice sin utilizar objetos y funcionó y cuando quise implementarlo de esta manera ya no anduvo.

El error que me dice es:
Cita:
Conversion from string "insert into turnos values('11/4/" to type 'Double' is not valid.
Intenté cambiar los tipos de datos, usar CInt antes de asignar el valor, y sin embargo, nada pasa.
La base de datos tiene los mismos campos que la clase turno, y los mismos tipos.

Acá pasteo la clase:


Cita:
Public Class turno
Public dia As Date
Public hppio As Integer
Public hfin As Integer
Public paciente As Integer
Public profesional As Integer
Public total As Integer
Public adelanto As Integer
Public resto As Integer

Public Sub agendar()
Dim conexion As New SqlClient.SqlConnection
Dim comando As New SqlClient.SqlCommand

conexion.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\David\My Documents\Visual Studio 2005\Projects\Turnos\Turnos\mibase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

Try
conexion.Open()
Catch ex As Exception
MsgBox("No se ha podido conectar a la base de datos!", MsgBoxStyle.Critical, "Error!")
Return
End Try

comando.CommandType = CommandType.Text
comando.CommandText = "insert into turnos values('" + dia + "'," + hppio + "," + hfin + "," + paciente + "," + _
profesional + "," + total + "," + adelanto + "," + resto + ")"
comando.Connection = conexion

If hppio <> "" And hfin <> "" And paciente <> "" And profesional <> "" Then
Try
comando.ExecuteNonQuery()
Catch ex As Exception
MsgBox("No se ha podido agregar el turno!", MsgBoxStyle.Critical, "Error!")
conexion.Close()
Return
End Try
Else
MsgBox("Debe completar los datos requeridos!", MsgBoxStyle.Critical, "Error!")
End If

conexion.Close()

End Sub
End Class
Y así creo el objeto y le paso los parámetros...

Cita:
Dim nuevoturno As New turno

With nuevoturno
.dia = DateTimePicker1.Value
.hppio = TextBox1.Text
.hfin = TextBox2.Text
.paciente = ComboBox1.Text
.profesional = ComboBox2.Text
.total = TextBox3.Text
.adelanto = TextBox4.Text
.resto = nuevoturno.total - nuevoturno.adelanto
End With

nuevoturno.agendar()
Alguna sugerencia?
  #2 (permalink)  
Antiguo 04/11/2006, 13:45
Avatar de .seb  
Fecha de Ingreso: marzo-2006
Ubicación: Uruguay
Mensajes: 493
Antigüedad: 18 años, 2 meses
Puntos: 1
Estoy medio olvidado de VB pero creo que, tal como se hace en C#, tienes que convertir a string lo que quieres concatenar a un string. A todas las variables que estas concatenando pasalas a string a ver que pasa.
Código:
comando.CommandText = "insert into turnos values('" + dia.ToString() + "'," + hppio.ToString() + "," + hfin.ToString() + "," + paciente.ToString() + "," + _
profesional.ToString() + "," + total.ToString() + "," + adelanto.ToString() + "," + resto.ToString() + ")"
Para no tener que escribir a mano las sentencias SQL desarrolle una herramienta que tal vez pueda servirte. Puedes verla en mi blog.

Suerte!
__________________
saludos
seba
http://sgomez.blogspot.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:24.