Problemas con Strict off

12/09/2005 - 16:21 por Juan Melas | Informe spam
Desarrolle una aplicación con la opción Strict off, en mi maquina funciona
bien, al copiarla a otra máquina me marca "error de sintaxis al convertir
una cadena de caracteres a datetime".

Preguntas similare

Leer las respuestas

#11 Eduardo A. Morcillo [MS MVP VB]
14/09/2005 - 05:56 | Informe spam
En este caso no tenía nada que ver la opción Strict off



En mi opinion tiene un poco que ver porque de tener Strict On hubieras
tenido que hacer la conversion de forma explicita y por lo tanto hubieras
hecho lo que hiciste ahora desde un principio. En cuanto a la funcion, te
las has complicado un poco innecesariamente. Solamente tenias que hacer (la
T en el medio no es un error):

' Resultado = "2005-09-14T00:56:00"
fecha.ToString("yyyy-MM-ddThh:mm:ss")

o si lo quieres con cast:

' Resultado = "CAST('2005-09-14T00:56:00' AS SMALLDATETIME)"
fecha.ToString("'CAST(\''yyyy-MM-ddThh:mm:ss'\' AS SMALLDATETIME)'")

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#12 Juan Melas
15/09/2005 - 00:13 | Informe spam
Gracias, Eduardo, estoy viendo el tema de strict on y me doy cuenta que
tengo que cambiar la lógica de mi aplicación. Tengo una aplicación en
capas, una capa de acceso a datos, una de negocios y una de usuario. En la
clase base de formulario tengo una variable object a la que en cada
formulario heredado la asigno a la clase correspodiente, (por lo que veo con
strict on no lo puedo hacer), por lo que con un par de propiedades el
formulario funciona practicamente sin código, ya que todo lo hereda del form
base, hay alguna forma de soucionarlo ya que sería muy engorroso recodificar
todo siendo que en un 90% el código es el mismo en cada formulario,?

Gracias

"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> escribió en el
mensaje news:
En este caso no tenía nada que ver la opción Strict off



En mi opinion tiene un poco que ver porque de tener Strict On hubieras
tenido que hacer la conversion de forma explicita y por lo tanto hubieras
hecho lo que hiciste ahora desde un principio. En cuanto a la funcion, te
las has complicado un poco innecesariamente. Solamente tenias que hacer
(la T en el medio no es un error):

' Resultado = "2005-09-14T00:56:00"
fecha.ToString("yyyy-MM-ddThh:mm:ss")

o si lo quieres con cast:

' Resultado = "CAST('2005-09-14T00:56:00' AS SMALLDATETIME)"
fecha.ToString("'CAST(\''yyyy-MM-ddThh:mm:ss'\' AS SMALLDATETIME)'")

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Respuesta Responder a este mensaje
#13 Eduardo A. Morcillo [MS MVP VB]
15/09/2005 - 00:50 | Informe spam
La forma correcta de hacerlo seria que las clases que guardas en la variable
Object implementen una misma interface o que hereden de una misma clase. En
esta interface o clase pondrias todo lo que sea comun y uses en el
formulario base. Luego en el formulario en lugar de declarar la variable
como object la declaras del tipo de la clase o interface. En los formularios
heredados haces un cast cuando necesites usar algun miembro de la clase
heredada (o puedes tener una referencia a nivel de clase). Un ejemplo:

Class Persona

Public Nombre As String
Public Apellido As String

End Class

Class Empleado
Inherits Persona

Public FechaDeIngreso As Date
Public Cargo As String

End Class

Class FormularioEdicionPersona
Inherits System.Windows.Forms.Form

Protected persona As Persona

' ...

Sub HacerAlgo()
persona.Nombre = txtNombre.Text
End Sub

End Class

Class FormularioEdicionEmpleado
Inherits FormularioEdicionPersona

Sub New() {
persona = New Empleado();
}

Sub HacerAlgoMas()
DirectCast(persona, Empleado).Cargo = txtCargo.Text
End Sub

End Class

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#14 Leonardo Azpurua [mvp vb]
15/09/2005 - 01:41 | Informe spam
"Juan Melas" escribió en el mensaje
news:
Gracias, Eduardo, estoy viendo el tema de strict on y me doy cuenta que
tengo que cambiar la lógica de mi aplicación. Tengo una aplicación en
capas, una capa de acceso a datos, una de negocios y una de usuario. En la
clase base de formulario tengo una variable object a la que en cada
formulario heredado la asigno a la clase correspodiente, (por lo que veo
con strict on no lo puedo hacer), por lo que con un par de propiedades el
formulario funciona practicamente sin código, ya que todo lo hereda del
form base, hay alguna forma de soucionarlo ya que sería muy engorroso
recodificar todo siendo que en un 90% el código es el mismo en cada
formulario,?



Hola, Juan:

La solución para ese tipo de problemas está en las Interfaces.

Imagino que cada una de las clases cuyas instancias pasas "As Object" tiene
en común una serie de propiedades con las demás. Esa serie de propiedades
constituyen una Interfaz. La solución, entonces, es declarar esa interfaz,
implementarla en las diferentes clases y cambiar la definición As Object por
As nombreInterfaz.

Salud!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida