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

Malditos nulos

Estas en el tema de Malditos nulos en el foro de ASP Clásico en Foros del Web. Se me plantea un problema que no logro solucionar. Mi base de datos esta en access, pues bien tengo un formulario en el que pueden ...
  #1 (permalink)  
Antiguo 27/02/2002, 05:17
 
Fecha de Ingreso: agosto-2001
Mensajes: 336
Antigüedad: 22 años, 9 meses
Puntos: 0
Malditos nulos

Se me plantea un problema que no logro solucionar.
Mi base de datos esta en access, pues bien tengo un formulario en el que pueden rellenar datos (es una modificacion de datos ya existentes) y es posible que alguno de ellos esten en blanco, esta aqui bien no?, pues aqui viene el problema, tengo un campo en la base de datos declarado como numerico de tipo doble con 6 decimales al cual le tengo puesto que no sera requerido y ningun valor por defecto, pues bien a la hora de recoger el codigo y hacer un update me da error de no coincidenlos tipos de datos.Si paso el campo a texto no me da el error y no me inserta nada (que es lo que yo quiero), pero al ser de tipo numerico me da error,alguien puede ayudarme Maestros?
El codigo donde recogo la variable es:

Código:
importe=Request("importe")
SQL  = "UPDATE TARIFAT0 SET importe ='" & importe & "' WHERE Id=1"
Set rs = conexion.Execute(SQL)
Y el formulario el campos es de tipo text:

Código:
<td width="209" bgcolor="#8CAEC6" align="center" valign="middle"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#FFFFFF"><%=Rs("importe")%></font></td>
Saludos
  #2 (permalink)  
Antiguo 27/02/2002, 06:08
 
Fecha de Ingreso: enero-2002
Mensajes: 120
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Malditos nulos

Parece que no recibes nada, o lo que recibes no es correcto.
¿Has hecho un response.write de inporte antes? ¿A ver que sale?
A veces si haces un Request("parametro") a secas, sin especificar si el form, querystring o cookie; te puede devolver un dato erroneo.
Sugiero que recojas importe mediante request.querystring("Importe") o request.Form("Importe"), dependiendo si el método utilizado es POST o GET.
Pon un response.write de importe, a ver si recibes lo que esperas.
Ya dirás algo. Suerte.
  #3 (permalink)  
Antiguo 27/02/2002, 06:13
Avatar de Antonito  
Fecha de Ingreso: noviembre-2001
Ubicación: en la red
Mensajes: 446
Antigüedad: 22 años, 6 meses
Puntos: 3
Re: Malditos nulos

O ago asi...
no se = es una tontería pero:
Código:
If Request("importe") <> "" then
 importe=Request("importe")
 SQL = "UPDATE TARIFAT0 SET importe ='" &  importe & "' WHERE Id=1"
 Set rs = conexion.Execute(SQL)
Else
End if
  #4 (permalink)  
Antiguo 27/02/2002, 06:21
 
Fecha de Ingreso: agosto-2001
Mensajes: 336
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Malditos nulos

No ya lo probe, con un response.write sale:

UPDATE TARIFAT0 SET importe ='' WHERE Id=7

Que deberia estar bien y que me lo cogiera pero no me lo hace, y el problema de la segunda solucion es que aunque no contenga nada el campo de donde recibo el valor se debe guardar como nada(nulo)
  #5 (permalink)  
Antiguo 27/02/2002, 06:24
 
Fecha de Ingreso: enero-2002
Mensajes: 120
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Malditos nulos

Si el campo es numérico e importe llega vacio deberia quedarte:
UPDATE TARIFAT0 SET importe =0 WHERE Id=7

  #6 (permalink)  
Antiguo 27/02/2002, 06:45
 
Fecha de Ingreso: agosto-2001
Mensajes: 336
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Malditos nulos

Si, si eso le decia yo, pero es que el tolai de mi jefe (sin faltarle al respe
to) quiere que si esta vacio no aparezca un 0 porque segun él eso conlleva a una confusion por eso preguntaba si era posible que en los numericos si no hay nada en vez de 0 pueda meter un null.

No se si te lo he dicho antes pero Muchas gracias.
  #7 (permalink)  
Antiguo 27/02/2002, 12:22
 
Fecha de Ingreso: enero-2002
Mensajes: 120
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Malditos nulos

Pues me temo que en la base de datos no puede quedar vacío o con espacios. Como mucho puedes insertar un NULL.
UPDATE TARIFAT0 SET importe = null WHERE Id=7.
Luego controlar en la lectura para verlo por pantalla o impresora y mostrar ''
  #8 (permalink)  
Antiguo 27/02/2002, 15:33
 
Fecha de Ingreso: febrero-2002
Mensajes: 39
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Malditos nulos


Hola amigos, me ocurre casi el mismo problema.
Quiero hacer un update en un campo numerico llamado ID1 y no puedo. Si lo paso a texto en acces si me deja.
Les paso el código, alguien me puede dar una mano.
Un abrazo.

<%Function ChkString(string)
if string = "" then string = " "
ChkString = Replace(string, "'", "''")
End Function
set my_conn= Server.CreateObject("ADODB.Connection")
my_Conn.Open ConnString
%>

<%
select case Request.QueryString("mode")
case "display"

StrSql = "Select * from SEGUI11 where log=" & Request.QueryString("id")
set rs = my_conn.Execute(StrSql)
%>

<%
case "edit"
%>
<form action="profile.asp?mode=go&id=<%=Requ est.QueryString("id")%>" method="post">

<%
case "go"
StrSql = "Select * from SEGUI11 where id1='" & ChkString(Request.Form("name"))
StrSql = StrSql & "' and id1 ='" & ChkString(Request.Form("name")) & "'"
set rs = my_conn.Execute(StrSql)

if rs.bof and rs.eof then
%>
</font>
<p><font size="4">código incorrecto o inexistente<br><br>
Oprima volver y vuelva a ingresarlo <%
Response.End
else
%></font></font><font face="<% =DefaultFontFace %>" size="4">
<form action="profile.asp?mode=doit&id=<%=Re quest.QueryString("id")%>" method="post" id=form1 name=form1>
<!-- #include file="profile.inc" -->
</form>
</font><font size="4" face="Arial">
<%


end if
case "doit"

StrSQl = "Update SEGUI11 Set verificador1 = '" & chkstring(Request.Form("verificador1")) & "', "
StrSQl = StrSQl & "imagen1 ='" & ChkString(Request.Form("imagen1")) & "', "
StrSQl = StrSQl & "nota1 ='" & ChkString(Request.Form("nota1")) & "' where id1 =
StrSQl = StrSQl & ChkString(Request.Form("name")) & "'"
my_conn.Execute(strSql)
%>


  #9 (permalink)  
Antiguo 28/02/2002, 08:02
 
Fecha de Ingreso: febrero-2002
Mensajes: 39
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Malditos nulos

hola amigos, le pido por favor una mano con esto ya que me evitaria problemas en mi trabajo.

Nuevamente gracias :(
  #10 (permalink)  
Antiguo 28/02/2002, 09:07
 
Fecha de Ingreso: enero-2002
Mensajes: 120
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Malditos nulos

¿Has hecho un response.write de strSQL?.
Me parece que te sobran comillas.
Antes del execute, para que no pete haz:
response.write strSQL
response.end

Con esto verificarás la sentencia, que creo que es incorrecta.
  #11 (permalink)  
Antiguo 28/02/2002, 09:34
 
Fecha de Ingreso: febrero-2002
Mensajes: 39
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Malditos nulos


Dimoito, muchas gracias por la respuesta. Si, realice un response. Ocurre que puse parte del código dentro del foro por que no entra todo.
Te molestaría si te lo paso por mail para ver si detectas el error? Funciona perfecto pero cuando en Acces cambio el campo de texto a numerico. Me da error.

Me harias una gran gauchada ayudandome.
Un abrazo. Diego
  #12 (permalink)  
Antiguo 28/02/2002, 12:51
 
Fecha de Ingreso: enero-2002
Mensajes: 120
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Malditos nulos

Por supuesto que me puedes mandar ese email ;)
  #13 (permalink)  
Antiguo 28/02/2002, 15:59
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 4 meses
Puntos: 50
Re: Malditos nulos

No soy muy experto todavía en bases de datos en ASP, pero manejo VB6.0 y cuando tengo problemas de los campos nulos y no los muestra lo que hago es concatenarlos con las comilas por ejemplo en una lista de VB sería lo siguiente:

while not rs.eof
list1.additem rs!NombreCampo & ""
rs.MoveNext
wend

y con esto aunque haya campos nulos se puede seguir mi consulta..!!

Espero y sirva de algo..!!
Saludos ;)

<html><center><embed src="http://www.angelfire.com/on/cobainss/Movie1.swf" height=100 width=200><BR></embed></center></html>
  #14 (permalink)  
Antiguo 28/02/2002, 16:52
 
Fecha de Ingreso: enero-2002
Mensajes: 28
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Malditos nulos

Hola amigo, he mirado lo acontesido.
Creo que deberias probar lo siguiente.

El dato que esta recogiendo del formulario es de tipo texto Ok, y en la base de datos lo tienes como tipo numerico doble.

Bueno convierte el dato texto en numerico doble y lo intentas.

datotexto = Cdbl(datotexto)

e intentas nuevamente

Saludos.
  #15 (permalink)  
Antiguo 28/02/2002, 16:56
 
Fecha de Ingreso: enero-2002
Mensajes: 28
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Malditos nulos

importe=Request(&quot;importe&quot;)
importe=Cdbl(importe)
agre en ubdate
Saludos
  #16 (permalink)  
Antiguo 28/02/2002, 17:07
 
Fecha de Ingreso: febrero-2002
Mensajes: 39
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Malditos nulos


Taco y Rootk. Amigos me gustaria pegar el código completo (pero no entra en el foro) ya que no interpreto donde puedo modificarle la caracteristica a modo Texto. La verdad es que por lo general hago cosas simples pero ahora necesito hacer esto y es muy complejo para mi.

Les paso el código completo por mail para ver si detectan el error.

Por favor confirmen si les llego.

Un abrazo y muchas Gracias
  #17 (permalink)  
Antiguo 01/03/2002, 00:37
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 4 meses
Puntos: 50
Re: Malditos nulos

Hi again friend, creo que no me ha llegado el mail con tu code..! Si quieres te mando de nuevo mi mail es:
[email protected]

Saludos..!!
;)

<html><center><embed src="http://www.angelfire.com/on/cobainss/Movie1.swf" height=100 width=200><BR></embed></center></html>
  #18 (permalink)  
Antiguo 01/03/2002, 00:54
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 5 meses
Puntos: 1
Re: Malditos nulos

mmm jeje, creo que debe ser asi

SQL = &quot;UPDATE TARIFAT0 SET importe =&quot;&amp; importe&amp;&quot; WHERE Id=1&quot;

saludos :)
  #19 (permalink)  
Antiguo 01/03/2002, 02:06
 
Fecha de Ingreso: febrero-2002
Ubicación: Mi ASP Bunker
Mensajes: 397
Antigüedad: 22 años, 3 meses
Puntos: 1
Re: Malditos nulos

Mecenias, partamos de la base que el campo debe permanecer Numerico, ok ?
Entonces proba con este codigo :

importe = Request(&quot;importe&quot;)
IF ISNUMERIC(importe) THEN
SQL = &quot;UPDATE TARIFAT0 SET importe =&quot; &amp; importe &amp; &quot; WHERE Id=1&quot;
Set rs = conexion.Execute(SQL)
END IF

Sin comillas en sql !
  #20 (permalink)  
Antiguo 01/03/2002, 05:07
 
Fecha de Ingreso: agosto-2001
Mensajes: 336
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Malditos nulos

Gracias a todos de nuevo, ya solucione mi problema (Bueno puse un parche como microsoft, je je), les cuento:

El problema era de comilla, al ser numerico debia meterlo como:

UPDATE TARIFAT41 SET precio ='&quot; &amp; precio &amp; &quot;' WHERE Id=1&quot;

Pues si lo actualizaba asi:

UPDATE TARIFAT41 SET precio =&quot; &amp; precio &amp; &quot; WHERE Id=1&quot;

Sin comillas simples,No me dejaba (el famoso error de tipo)

Siguiendo,Como vereis esta dentro de comillas simples para que me lo coga como numero porque sino me da error de tipo,pues bien cuando insertaba el nullo,es decir
precio=&quot;null&quot; o precio=null (probe con todo) al estar entre las comillas simples me insertar 'null' y claro eso si que da error de tipo, la unica solucion era quitar las comillas simples, en este caso si que me dejaba insertar el nulo pero no me dejaba insertar numeros, asi que me cree mi propio Servipack 1( je,je).

Hice 2 funciones:;

1)Al insertar en mi BD cuando fuese nulo pues me insertase un 0 enla base de datos (para no tener el problema
2)Al recuperar el datoy mostralo al cliente pues al reves cuando me cogiera un 0 de la BD pues se lo mostraba como nulo

Y asi to resuelto por el momento, aunque me estoy carcomiendo por dentro, porque debe haber una forma de hacerlo bien y no con este parche.

Salud s a todos.

P.D:Tetra mandame el codigo, cuando tenga un hueco lo miro. :(


  #21 (permalink)  
Antiguo 01/03/2002, 08:09
 
Fecha de Ingreso: febrero-2002
Mensajes: 39
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Malditos nulos


Rootk, muy bueno tu logo. Ya te envié el código a tu correo.

Mecenias, me pasas tu dirección. Así te envío el código.
Te dejo mi nueva dirección de correo
[email protected]

Creo que mi error puede estar en esta parte del código.

StrSQl = &quot;Update C1 Set verificador1 = '&quot; &amp; chkstring(Request.Form(&quot;verificador1&quot;)) &amp; &quot;', &quot;
StrSQl = StrSQl &amp; &quot;nota1 ='&quot; &amp; ChkString(Request.Form(&quot;nota1&quot;)) &amp; &quot;' where id1 = '&quot;
StrSQl = StrSQl &amp; ChkString(Request.Form(&quot;name&quot;)) &amp; &quot;'&quot;

my_conn.Execute(strSql)
%&gt;

Un abrazo :(
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 23:15.