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

Función Replace me devuelve error

Estas en el tema de Función Replace me devuelve error en el foro de ASP Clásico en Foros del Web. Saludos: Tengo esta función que me permite cambiar los finales de linea de un campo de una DB ACCESS: Function AcomodarDb(txt) txt = Replace (txt, ...
  #1 (permalink)  
Antiguo 07/02/2006, 05:13
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Función Replace me devuelve error

Saludos:
Tengo esta función que me permite cambiar los finales de linea de un campo de una DB ACCESS:

Function AcomodarDb(txt)
txt = Replace (txt, vbCrLf, "<BR>")
AcomodarDb = txt
End Function

Todos los campos de un recordset aparecen mostrados en una tabla. Lo que quiero hacer es que cuando un campo esté vacio no aparezca para lo cual hago lo siguiente:

<%if rs("situacionhotel") <> "" then%>
<tr>
<td valign="top" class="FICHAAGENCIAITEMS">Situaci&oacute;n</td>
<td colspan="2" valign="top" class="FICHAAGENCIADATOS"><%=AcomodarDb(RS("situac ionhotel"))%></td>
</tr>
<%end if%>

El problema es que cuando el campo está vacio me devuelve el error:

Uso no válido de Null: 'Replace'

Entiendo que esto es porque la función al estar el campo vacio no tiene nada que reemplazar y entonces da ese error.

He probado la función asi:

Function AcomodarDb(txt)
if txt <> "" then
txt = Replace (txt, vbCrLf, "<BR>")
AcomodarDb = txt
end if
End function

pero tampoco va.
¿Saben como puedo hacerlo?
Gracias
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #2 (permalink)  
Antiguo 07/02/2006, 05:27
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 21 años, 3 meses
Puntos: 1
Ando medio haragán para escribir, copié y pege de un manual de VBScript:



Función IsNull
Devuelve un valor de tipo booleano que indica si una expresión contiene datos no válidos (Null).

IsNull(expresión)

El argumento expresión puede ser cualquier expresión.

Comentarios
IsNull devuelve True si expresión es Null, es decir, contiene datos no válidos; si no, IsNull devuelve False. Si expresión contiene más de una variable, Null en cualquier variable de constituyente hace que se devuelva True para toda la expresión.

El valor Null indica que la variable contiene datos no válidos. Null no es lo mismo que Empty, que indica que una variable no se ha inicializada aún. Tampoco es lo mismo que una cadena de longitud cero (""), a la que a veces se hace referencia como una cadena de tipo null.

Precaución Utilice la función IsNull para determinar si una expresión contiene un valor Null. Las expresiones que podría esperar que se evaluaran como True bajo algunas circunstancias, tales como If Var = Null and If Var <> Null, son siempre False. Esto se debe a que cualquier expresión que contiene Null es en sí misma Null y, por tanto, False.
  #3 (permalink)  
Antiguo 07/02/2006, 05:49
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Segun entiendo de tu post si yo escribo la función así:

Function AcomodarDb(txt)
if not isnull(txt) then
txt = Replace (txt, vbCrLf, "<BR>")
AcomodarDb = txt
end if
End function

deberia funcionar pero me da el mismo error
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #4 (permalink)  
Antiguo 07/02/2006, 06:19
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Prueba así:
Código:
<%if rs("situacionhotel") <> "" or not isnull(rs("situacionhotel")) then%>
<tr><td valign="top" class="FICHAAGENCIAITEMS">
Situaci&oacute;n
</td>
<td colspan="2" valign="top" class="FICHAAGENCIADATOS">
<%=AcomodarDb(RS("situacionhotel"))%>
</td></tr>
<%end if%>
Y utiliza la primera función que pusiste.
  #5 (permalink)  
Antiguo 07/02/2006, 06:34
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Ahora lo he dejado como me has dicho pero me da el mismo error:

<%
Function AcomodarDb(txt)
txt = Replace (txt, vbCrLf, "<BR>")
AcomodarDb = txt
End function
%>

<%if rs("situacionhotel") <> "" or not isnull(rs("situacionhotel")) then%>
<tr>
<td valign="top" class="FICHAAGENCIAITEMS">Situacion</td>
<td colspan="2" valign="top" class="FICHAAGENCIADATOS"><%=AcomodarDb(RS("situac ionhotel"))%></td>
</tr>
<%end if%>
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #6 (permalink)  
Antiguo 07/02/2006, 08:32
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Prueba así:

<%if rs("situacionhotel") <> "" and not isnull(rs("situacionhotel")) then%>
  #7 (permalink)  
Antiguo 07/02/2006, 10:25
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Para evitar la doble comparación, si está vacío y si es nulo, podés hacer:

<% if rs("situacionhotel") & "" <> "" then%>
__________________
...___...
  #8 (permalink)  
Antiguo 07/02/2006, 11:39
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
pues no lo entiendo.... porque el campo esta vacio, pero de ninguna de las dos ultimas formas funciona.
Bueno, el campo es un campo Memo. No se si tiene algo que ver.... si lo tiene perdon por el olvido.
Ni como comenta Al ni como me comenta 3pies (ni con or ni con and).
Gracias
__________________

Espero haber aprendido algo de tí.
A mi padre.

Última edición por ciberpata; 07/02/2006 a las 12:49
  #9 (permalink)  
Antiguo 08/02/2006, 04:53
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
He comprobado que si el campo situacionhotel es de tipo "Texto", no hay ningún problema.
El problema surge cuando el campo es de tipo "Memo". El caso es que me hace falta un campo que mida más de 250 caracteres. Por eso tiene que ser "Memo"
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #10 (permalink)  
Antiguo 08/02/2006, 05:11
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 21 años, 3 meses
Puntos: 1
Creo hace mucho tiempo me pasó algo parecido y resulta que si no ponía el campo Memo al final de todos los campos de la sentencia SELECT no me lo traía.

Por ejemplo, supongamos que hay tres campos:
A tipo Autonumerico
B tipo Memo
C tipo varchar

SELECT A, C, B FROM ....
  #11 (permalink)  
Antiguo 08/02/2006, 05:15
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
En mi caso la sentencia SQL es:

"Select * From guiahoteles where referenciahotelcasa='" &referenciahotelcasa& "'"

Asi selecciono el registro y despues es cuando recojo el valor del campo MEMO "situacionhotel"
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #12 (permalink)  
Antiguo 08/02/2006, 11:22
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Ahhh, hacé una cosa, no compares directamente contra el campo de la BD sino contra una variable:

<%
situacionhotel = rs("situacionhotel")
if situacionhotel & "" <> "" then
%>
<tr>
<td valign="top" class="FICHAAGENCIAITEMS">Situaci&oacute;n</td>
<td colspan="2" valign="top" class="FICHAAGENCIADATOS"><%=AcomodarDb("situacion hotel"))%></td>
</tr>
<%end if%>


probalo y contanos
__________________
...___...
  #13 (permalink)  
Antiguo 08/02/2006, 11:52
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
He hecho como me has dicho Al_Zuwaga pero me sigue dando el mismo error, o sea:

Uso no válido de Null: 'Replace'

No lo entiendo.....
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #14 (permalink)  
Antiguo 09/02/2006, 06:30
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 21 años, 3 meses
Puntos: 1
¿No probaste como te dije?

No pongas "SELECT * FROM....", declará todos los campos en la sentencia SELECT y por ultimo pone el campo MEMO.

Suerte.
  #15 (permalink)  
Antiguo 09/02/2006, 07:25
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
PMP, fijate en el hilo 11.
Yo selecciono el registro de esta forma:

"Select * From guiahoteles where referenciahotelcasa='" &referenciahotelcasa& "'" y despues veo si el campo memo esta vacio.
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #16 (permalink)  
Antiguo 10/02/2006, 07:18
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 21 años, 3 meses
Puntos: 1
Por eso mismo, NO pongas "SELECT * FROM guiahoteles ....."
Probá poniendo "SELECT campo1, campo2, situacionhotel FROM guiahoteles ....."
En la sentencia SELECT deja para lo ultimo el campo Memo.

Ya no sé como explicarte, espero que me entiendas.
  #17 (permalink)  
Antiguo 10/02/2006, 11:10
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Ya te he entendido PMP, disculpa mi despiste, es que siempre me olvido del asterisco, pero tampoco funciona me sigue dando el mismo error.
gracias
__________________

Espero haber aprendido algo de tí.
A mi padre.
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 21:29.