Foros del Web » Programando para Internet » ASP Clásico »

IF que cambia el contenido de un campo

Estas en el tema de IF que cambia el contenido de un campo en el foro de ASP Clásico en Foros del Web. Hola a todos, es la primera vez que escribo en el foro, así que ante todo disculpas si no me explico bien y gracias de ...
  #1 (permalink)  
Antiguo 12/03/2010, 02:28
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
IF que cambia el contenido de un campo

Hola a todos, es la primera vez que escribo en el foro, así que ante todo disculpas si no me explico bien y gracias de antemano por vuestra ayuda...

En una web que estoy desarrollando, el usuario envía una serie de datos, que se insertan en una bbdd. Después, muestro esos datos, pero no quiero que muestre las celdas que están vacías. Lo he hecho de este modo:

<% if (Tabla("nombre2")) <> "" Then Response.Write(Tabla.fields("nombre2")) & "&nbsp;" & (Tabla("apellidos2")) & "<br>" & (Tabla("institucion2")) & "<br>" & (Tabla("otra_in2")) & "<br><br>" End If%>

<% if (Tabla("nombre3")) <> "" Then Response.Write(tabla("nombre3")) & "&nbsp;" & (Tabla("apellidos3")) & "<br>" & (Tabla("institucion3")) & "<br>" & (Tabla("otra_in3")) & "<br><br>" End If%>

Por supuesto, antes de esto está la consulta a la bbdd y la creación del objeto Recordset llamado Tabla. La condicional sí está funcionando cuando el campo está vacío (no me muestra nada), pero cuando contiene algo, me devuelve algo así:

Pérez
Universidad de Salamanca
Dpto. Física

O sea, se come el nombre, como si la IF estuviera igualando el valor del campo a empty en vez de cogerlo...

¿Alguien sabe cómo podría solucionarlo?

Muchas gracias
  #2 (permalink)  
Antiguo 12/03/2010, 06:10
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: IF que cambia el contenido de un campo

Hola, bienvenido a fdw

Prueba así

Cita:
<% if (Tabla.fields("nombre2")) <> "" Then Response.Write(Tabla.fields("nombre2") & "&nbsp;" & Tabla.fields("apellidos2") & "<br>" & Tabla.fields("institucion2") & "<br>" & Tabla.fields("otra_in2") & "<br><br>") End If%>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 12/03/2010, 06:14
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Gracias Adler, pero me sigue haciendo lo mismo. También he probado a pasar el campo por una variable, pero me lo sigue sustituyendo por empty... vaya desesperación...
  #4 (permalink)  
Antiguo 12/03/2010, 06:26
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: IF que cambia el contenido de un campo

Para que se cumpla la condición el campo ha de traer algún valor. Prueba a imprimir solo ese campo

Cita:
<% if (Tabla.fields("nombre2")) <> "" Then
Response.Write Tabla.fields("nombre2")
end if%>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 12/03/2010, 06:36
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Hola!

Sigue haciendo igual: ahora no mem uestra nada, ni el nombre (porque sigue igualándolo a empty) ni el resto de campos, porque no se los he puesto....

...
  #6 (permalink)  
Antiguo 12/03/2010, 06:43
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: IF que cambia el contenido de un campo

Ha de traer algún valor. Haz esta prueba de escritorio

Cita:
<%if Tabla.fields("nombre2") <> "" Then
Response.Write Len(Tabla.fields("nombre2"))
else
Response.Write "Vacío"
end if%>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 12/03/2010, 07:04
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Pues no me devuelve nada...
  #8 (permalink)  
Antiguo 12/03/2010, 08:11
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: IF que cambia el contenido de un campo

A me me gustaría que volvieras a pegar el código que tienes ya actualizado, y te volvieras a explicar, por favor.
  #9 (permalink)  
Antiguo 12/03/2010, 18:05
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Si entendí bien el problema, esto me suena más a que...
  1. el campo trae espacios en blanco y por eso tu condición se cumple, y te está imprimiendo los espacios.
  2. tus campos en la DB traen valores NULL, no vacíos.

Tendrías que revisar la información que tienes en tu BD. Si se tratara del primer punto, lo puedes solucionar aplicando un RTrim/LTrim desde la consulta; si se tratara del segundo caso, también puedes insertar la condicion IS NULL en la consulta o ambos puedes solucionarlos directamente desde el código.

A ver, intenta con esto:
If Tabla.fields("nombre2").Value <> "" And IsNull(Tabla.fields("nombre2").Value) = False Then
<... imprimir registros>
End If


También se me ocurre que agregues la propiedad Value a la sentencia que te imprime el valor del campo de tu consulta, es decir, Tabla.fields("nombre2").Value

Si no es ninguno de estos casos, necesitariamos más detalle de los registros en tu DB para poder ayudarte.

Saludos!
  #10 (permalink)  
Antiguo 15/03/2010, 04:31
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

He retomado hoy el problema con el if y probado lo que me proponíais, pero sigue sin devolver nada. Os pego a continuación todo el código tal y como lo tengo ahora:

Código:
<% 
Dim Conexion,Tabla 
Set Conexion=Server.CreateObject("adodb.connection") 
Set Tabla=Server.CreateObject("adodb.recordset") 
Conexion.Open "dsn=midsn"
 
Dim Temp 
Temp="SELECT * FROM mitabla INNER JOIN otratabla ON otratabla.dni_autor=mitabla.dni_autor WHERE otratabla.dni_autor like '" & session("id_autor") & "' and siadjunto ='si'"
%>

<%
Tabla.Open Temp, Conexion 
If Tabla.BOF And Tabla.EOF Then 
%> 

<br>
Aún no ha enviado ningún archivo.

<% 
Else 
%>

<% While Not Tabla.EOF%> 

<%
Response.Write (Tabla("nombre1"))
Response.Write "&nbsp;"
Response.Write (Tabla("apellidos1"))
Response.Write "<br>"
Response.Write(Tabla("institucion1"))
Response.write "<br>"
Response.Write(Tabla("otra_in1"))
response.Write "<br><br>"
%>

<% If Tabla.fields("nombre2").Value <> "" And IsNull(Tabla.fields("nombre2").Value) = False Then
Response.Write (Tabla.fields("nombre2"))
end if%>

<% 
Tabla.MoveNext 
Wend 
Tabla.Close 
Conexion.Close 
End If 
%>
Y lo que me devuelve es:

Nombre1 Apellidos1
Institucion1
otra_in1

... es decir, no me devuelve nada del nombre2. He comprobado los datos de DB; sí hay y no tienen ningún espacio...

muchas gracias por vuestra ayuda!!
  #11 (permalink)  
Antiguo 15/03/2010, 12:50
 
Fecha de Ingreso: febrero-2008
Ubicación: Buenos Aires
Mensajes: 58
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Me parece que el problema viene en que en el IF estás utilizando el "AND".

Probá con un "OR" y ademas agregale un else y ponele un response.write algo...para saber que pasa por ahi.

Saludos!
  #12 (permalink)  
Antiguo 16/03/2010, 02:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

He probado como me dices poniendo lo siguiente:

<% If Tabla.fields("nombre2").Value <> "" or IsNull(Tabla.fields("nombre2").Value) = False Then
Response.Write (Tabla.fields("nombre2").value)
else
response.Write "vacío"
end if%>

Tampoco así devuelve nada.

He probado a invertir la condicional (poniendo If Tabla.fields("nombre2").Value = "" ), y sí devuelve "vacío"...
  #13 (permalink)  
Antiguo 16/03/2010, 10:05
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Esto está muy raro, y se me ocurre que podrías poner para comprobar la información las condiciones por separado, como sigue...

<%
If Tabla.fields("nombre2").Value <> "" Then
Response.Write("NO Vacío")
Response.Write(Tabla.fields("nombre2").Value)
Else
Response.Write ("Vacío")
End If
%>


Y poner lo mismo pero para la validación de datos nulos...

<%
If IsNull(Tabla.fields("nombre2").Value) = False Then
Response.Write("NO Nulo")
Response.Write(Tabla.fields("nombre2").Value)
Else
Response.Write ("Nulo")
End If
%>


Qué te devuelven estas instrucciones?

Otra cosa que se me ocurre es que quites las condiciones y mandes a imprimir siempre el valor de ese campo para ver qué es lo que te está devolviendo la consulta.

Intenta y nos comentas qué sucede, sí?

Saludos!
  #14 (permalink)  
Antiguo 16/03/2010, 10:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 191
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Toc toc....permiso..jejejeje

Mira...hace poco necesitaba hacer algo parecido.....lo que
tienes que hacer para que funcione es cambiar

Código:
<%
 If Tabla.fields("nombre2").Value <> "" And IsNull(Tabla.fields("nombre2").Value) = False Then
Response.Write (Tabla.fields("nombre2"))
end if
%>
Por esto:

Código:
<%
 If Tabla.fields.item("nombre2").Value <> "" And IsNull(Tabla.fields.item("nombre2").Value) = False Then
Response.Write (Tabla.fields("nombre2"))
end if
%>
O sea sólo te falta cambiar el tabla.fields por tabla.fields.item

Esop.....suerte
  #15 (permalink)  
Antiguo 17/03/2010, 02:51
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Darkmcloud, he probado lo que decías pero tampoco ha funcionado...

Marco_foros, al poner las condiciones por separado me devuelve:

NO vacío
Nulo

Pero ni rastro del nombre2... esto es la leche
  #16 (permalink)  
Antiguo 17/03/2010, 07:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: IF que cambia el contenido de un campo

Primero:
¿Haz verificado en tu gestor de BD que tu consulta efectivamente regresa algo en ese campo?

Código ASP:
Ver original
  1. ...
  2. Temp="SELECT * FROM mitabla INNER JOIN otratabla ON otratabla.dni_autor=mitabla.dni_autor WHERE otratabla.dni_autor like '" & session("id_autor") & "' and siadjunto ='si'"
  3. response.write Temp
  4. response.end
  5. ....

Segundo:
De qué tipo es ese campo?

Tercero:
Suponiendo que sea string y a fin de probar, cambia tu IF por este:
Código ASP:
Ver original
  1. If LEN(TRIM(Tabla("nombre2"))) > 0 Then
  2. Response.Write "Contenido del campo: " & Tabla("nombre2")
  3. else
  4. Response.write "El campo no tiene valor"
  5. end if

Saludos
  #17 (permalink)  
Antiguo 17/03/2010, 09:20
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Hola Myakire!

Te contesto yo también por partes:

1.- Si pongo response.Write(Tabla.fields("nombre2")) me lo devuelve sin problema. El problema es sólo cuando le pido el mismo dato con un if.

2.- Utilizo Access, así que el tipo de dato es memo...

3.- He probado con el código que me decías y me devuelve lo siguiente:

Contenido del campo:

(sin el nombre2, que sé q tiene contenido)

ya no sé qué más probar...

muchas gracias!!
  #18 (permalink)  
Antiguo 17/03/2010, 09:42
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Cita:
Iniciado por Phoevbe Ver Mensaje
Marco_foros, al poner las condiciones por separado me devuelve:

NO vacío
Nulo

Pero ni rastro del nombre2... esto es la leche
Ok, entonces ahora con ese mismo código, cambia la línea Response.Write("NO Vacío") por esta otra: Response.Write("Nombre2: " & Tabla.fields("Nombre2"))

Es demasiado raro que te muestre el campo cuando no hay condición, y que no lo haga cuando se la agregas, pues se trata de un simple IF.

Saludos!
  #19 (permalink)  
Antiguo 17/03/2010, 10:04
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Cita:
Ok, entonces ahora con ese mismo código, cambia la línea Response.Write("NO Vacío") por esta otra: Response.Write("Nombre2: " & Tabla.fields("Nombre2"))

Es demasiado raro que te muestre el campo cuando no hay condición, y que no lo haga cuando se la agregas, pues se trata de un simple IF.

Saludos!
Eso pienso yo, q es sólo un if, pero me sigue sin devolver el nombre2...

He hecho como me decías y el código queda de la siguiente forma:

Código:
<%
If Tabla.fields("nombre2").Value <> "" Then
Response.Write("Nombre2: " & Tabla.fields("Nombre2"))
Else
Response.Write ("Vacío")
End If
%>

<%
If IsNull(Tabla.fields("nombre2").Value) = False Then
Response.Write("NO Nulo")
Response.Write(Tabla.fields("nombre2").Value)
Else
Response.Write ("Nulo")
End If
%>
Y me devuelve esto:

Nombre2:
Nulo

............
  #20 (permalink)  
Antiguo 17/03/2010, 10:17
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Esto me hace pensar entonces que no trae datos tu consulta, o al menos no para ese registro, porque la condición la está cumpliendo...

Veamos... a ver, ahora cambiala por esta linea:


If Trim(Tabla.fields("nombre2").Value) <> "" Then

A ver qué imprime.

Saludos!
  #21 (permalink)  
Antiguo 17/03/2010, 10:41
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Me devuelve lo mismo q antes...

La consulta sí q trae datos para ese registro, porque cuando no le pongo el if y sólo pongo el response.Write(Tabla.fields("nombre2")) me lo devuelve sin problema...

¿¿puede q el problema venga de trabajar en Access??
  #22 (permalink)  
Antiguo 17/03/2010, 10:50
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

No, porque si así fuera, no te mostraría datos aún sin la condición. Debe ser otro el problema, pero es complicado hacerlo sin conocer la base para ver realmente qué datos tiene y se supone que tiene que devolver.

Quítale la condición, que imprima el campo y así como lo imprima ponlo aquí, por fa.

Saludos!
  #23 (permalink)  
Antiguo 17/03/2010, 11:42
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

He puesto:

<%
Response.Write "El segundo nombre que ha introducido es: "
Response.Write(Tabla.fields("nombre2"))
%>

Y me ha devuelto esto:

El segundo nombre que ha introducido es: Juana

En otro post ponía todo el código que va antes de este response.write, por si acaso...

muchas gracias!
  #24 (permalink)  
Antiguo 17/03/2010, 12:22
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

A ver, intenta con esto:

El nombre 2 es: <%=Tabla.fields("Nombre2").Value%>

Si arriba tienes código asp, no olvides cerrar la parte del script con %> antes de la línea que te puse arriba, y abrirla nuevamente despues de ésta.

Saludos!
  #25 (permalink)  
Antiguo 17/03/2010, 18:41
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: IF que cambia el contenido de un campo

Cita:
Iniciado por Phoevbe Ver Mensaje
1.- Si pongo response.Write(Tabla.fields("nombre2")) me lo devuelve sin problema. El problema es sólo cuando le pido el mismo dato con un if.
Mi duda era si hacías una nueva consulta en Access y colocabas tu query y lo ejecutabas, si ese campo tenia información

Cita:
2.- Utilizo Access, así que el tipo de dato es memo...
Ahí esta el problema

Si dices que haz colocado un If LEN(TRIM(Tabla("nombre2"))) > 0 Then y entra a esa condición y haz verificado:

a) Imprimir el contenido de LEN(), compruebas que tiene longitud pero sigues sin poderlo desplegar.
b) Asignar el campo a una variable haciendo un CSTR() e imprimir esa variable (verificar su longitud)
c) Te haz asegurado que tienes TEXTO en ese campo (con la respuesta del primer punto) y no es un campo BLOB (o su equivalente en Access, hace muchos años no lo uso)

entonces lo único que te queda hacer es .... tirar a la basura tu conexión ODBC y usar una OLEDB en su lugar.

Alguna vez alguien en el foro tuvo un problema no con la impresión del campo, sino con su actualización (solo problemas con el campo MEMO), y era por que usaba ODBC, cambió su conexión a OleDB y con eso se arregló el problema

Ya no recuerdo la fecha del post, pero encontré esto como referencia

Prueba eso, la verdad es que no te tomará más de 5 minutos y ya haz hecho muchas otras pruebas

Saludos
  #26 (permalink)  
Antiguo 18/03/2010, 03:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: IF que cambia el contenido de un campo

Ya funciona!!!!

Efectivamente al cambiar la conexión a OLEDB ha empezado a ir perfectamente.

Muchísimas gracias a todos!!!

Etiquetas: contenido, cambios, campos
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 15:17.