Visual Basic.NET - Otra pregunta

 
Vista:

Otra pregunta

Publicado por Elizabeth (7 intervenciones) el 14/12/2004 18:23:08
Tenfo este codigo mi problema es al declarar mi if yo le quiero indicar que si en la tabla NOMINAINICIOCIERRE en el campo ABIERTO hay un 1 que abilite mis campos y si hay un 0 pues lo contrario no se como hacerlo, se que mi codigo esta mal en el if o eso espero, a ver si me pueden ayudar ya no se que hacer

Private Sub VerificaAperturaCierreNomina()
'Leer tblNominaInicioCierre
Dim cn As SqlConnection
Dim cmd As SqlCommand
Dim dr As SqlDataReader
cn = New SqlConnection
cn.ConnectionString = "DATABASE=Crm;SERVER=sql4498_3.mysite4now.com;UID=Usuario;PWD=contraseña;"
cn.Open()
cmd = New SqlCommand("select abierto from tblnominainiciocierre", cn)
dr = cmd.ExecuteReader
If dr.Read("abierto") = 1 Then
txtNumeroPlan.Enabled = True
txtRuta.Enabled = True
Label6.Visible = False
btnTraePersonal.Enabled = True
Else
txtNumeroPlan.Enabled = False
txtRuta.Enabled = False
Label6.Visible = True
btnTraePersonal.Enabled = False
End If
End Sub

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Otra pregunta

Publicado por diana (15 intervenciones) el 14/12/2004 18:50:25
Proba con asignarlo a una variable así:
dim condicion as integer
condicion =Ctype(dr.Read("abierto") , Integer)
if condicion=1 then
...
Fijate si así te funciona

Si lo que querés es obtener un único campo con valor que indique abierto, podés usar el ExecuteScalar del objeto command. En tu consulta estás trayendo un conjunto registros, cada uno con un único campo abierto, porque no hay ninguna especificación en el where. Si tenés un único registro en la tabla tblnominainiciocierre no hay problema, pero si tenés más de un registro no lo sé, porque no sé de que se trata la tabla.
Si me especificás un poco más lo que querés te puedo llegar a ayudar. Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tabla

Publicado por Elizabeth (7 intervenciones) el 14/12/2004 19:07:38
Mi tabla solo tiene un campo se llama Abierto y contendra un 0 o un 1 de ahi mi pregunta de en mi codigo que envie de ejemplo como decirle a mi instruccion que si en la tabla tblNOMINAINICIOCIERRE en el campo ABIERTO hay un 1 que habilite mis txt de lo contrario que las vuelva a deshabilitar intentare lo que me comentas y te aviso el resultado gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error

Publicado por Elizabeth (7 intervenciones) el 14/12/2004 19:12:23
Me manda este error no se a que se refiera

Public Overridable NotOverridable Function Read() As Boolean no tiene parametros y su tipo de valor devuelto no se puede indizar.

No se si tenga que ver que en mi tabla el campo ABIERTO es e tipo Bit
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error

Publicado por Diana (15 intervenciones) el 14/12/2004 20:37:01
me parece que el visual no trabaja con tipo de datos bits. Si podes cambiar el tipo de dato de campo a integer mejor, y le insertas 0 o 1 según corresponda.
Por otro lado de conviene utilizar el executescalar. Así:

Dim miCon As New SqlConnection
Dim miQuery As String
Dim miCommand As New SqlCommand
Dim num As Interger

miCon.ConnectionString = "Cadena de conexion"
miQuery= " SELECT abierto FROM tblNOMINAINICIOCIERRE "
miCommand.CommandText = miQuery
miCon.Open
num = (CType(miCommand.ExecuteScalar()), Integer)
miCon.Close

if num=1 then
...
else
...
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aun no

Publicado por Elizabeth (7 intervenciones) el 14/12/2004 20:52:18
me marca error aqui
num = (CType(miCommand.ExecuteScalar(), Integer)

le quite un parentesis de mas pero me dice que esperaba ')'

no se a que se refiere por cierto gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aun no

Publicado por Diana (15 intervenciones) el 14/12/2004 21:56:27
probá así:

num = miCommand.ExecuteScalar()

siempre abriendo la conexion antes del executescalar y cerrando luego.
pero tiene que ser tipo entero el campo en la bd, así coincide con el tipo de num. sino vas a tener que declara a num como variant.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar