Ver Mensaje Individual
  #12 (permalink)  
Antiguo 18/04/2007, 09:16
mary*
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Como Insertar Datos???

Hola!!!...pues sigo teniendo problemas...me encontré un código que me pareció muy bueno pero lo he tratado de probar y me marca un error...les pongo el código para ver si me pueden orientar...gracias!!


1. Este código muestra un listado de lo que se encuentra en la BD, ademas de los links dependiendo si se requieren insertar, modificar o borrar datos:

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>

<%
Dim cnn, rcs, SQL
set cnn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
cnn.Open "driver={SQL Server};server=MGUE; database=Ventas; UID=sa;Password=sa;"

set rs = cnn.execute("SELECT * FROM usuarios")

' Maquetamos los resultados
' No incluyo Clave por seguridad (supongo)
%>
<a href="detalle.asp">Pulse aqui para insertar</a>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>RUF</td>
    <td>Nombre</td>
    <td>Perfil</td>
    <td>Sucursal</td>
    <td>&nbsp;</td>
  </tr>

<%
while not rs.EOF
%>

  <tr>
    <td><%=rs.fields("ruf").value%></td>
    <td><%=rs.fields("nombre").value%></td>
    <td><%=rs.fields("perfil").value%></td>
    <td><%=rs.fields("sucursal").value%></td>
    <!-- FIJATE EN LO QUE PONEMOS AQUI -->
    <td>
    <a href="detalles.asp?borrar=<%=rs.fields("ruf").value%>">Borrar Registro</a><br />
    <a href="detalles.asp?update=<%=rs.fields("ruf").value%>">Modificar Registro</a><br />    
    </td>
  </tr>

<%
    rs.movenext()
wend
%>
</table>
</body>
</html>
<%
set rs = nothing
cnn.close()
set cnn = nothing
%>

2. Este es el código que permite insertar datos:

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim cnn, rcs, SQL
set cnn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
cnn.Open "driver={SQL Server};server=MGUEVARA;Database=Rssql;UID=sa;Password=sa;"

' Borrado / busqueda para actualizar
if request.QueryString("borrar") <> "" then
    cnn.execute("DELETE FROM usuarios WHERE rut = " & request.QueryString("borrar"))
elseif request.QueryString("update") <> "" then
    set rs = cnn.execute("SELECT * FROM usuarios WHERE rut = " & request.QueryString("update"))
end if

' Insercion / modificacion de registros
if request.Form("rut") <> "" then
    if request.Form("action") = "update" then
        sql = "UPDATE usuarios SET nombre = '" & request.Form("nombre") & "'"
        sql = sql & ", clave = '" & request.Form("clave") & "'"
        sql = sql & ", perfil = '" & request.Form("perfil") & "'"
        sql = sql & ", sucursal = '" & request.Form("sucursal") & "'"
        sql = sql & " WHERE rut = " & request.Form("rut") ' Actualizar
    else
        ' Comprobamos que no exista
        Dim rsd
        set rsd = Server.CreateObject("ADODB.Recordset")
        set rsd = cnn.execute("SELECT rut FROM usuarios WHERE rut = " & request.Form("rut"))
        existe = not rsd.EOF
        rsd.close()
    
        if not existe then
            sql = "INSERT INTO usuarios (rut, nombre, clave, perfil, sucursal) VALUES ("
            sql = sql & "'" & request.Form("rut") & "'"    
            sql = sql & ",'" & request.Form("nombre") & "'"    
            sql = sql & ",'" & request.Form("clave") & "'"    
            sql = sql & ",'" & request.Form("perfil") & "'"    
            sql = sql & ",'" & request.Form("sucursal") & "')"    
        end if
        
    end if
end if

' Lo ideal es que controles el SQL injection
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>RUT</td>
      <td><input type="text" name="rut" value="<% if isObject(rs) then response.Write(rs.fields("rut").value) %>" /></td>
    </tr>
    <tr>
      <td>Nombre</td>
      <td><input type="text" name="nombre" value="<% if  isObject(rs) then response.Write(rs.fields("nombre").value) %>" /></td>
    </tr>
    <tr>
      <td>Clave</td>
      <td><input type="text" name="clave" value="<% if  isObject(rs) then response.Write(rs.fields("clave").value) %>" /></td>
    </tr>
    <tr>
      <td>Perfil</td>
      <td><input type="text" name="perfil" value="<% if  isObject(rs) then response.Write(rs.fields("perfil").value) %>" /></td>
    </tr>
    <tr>
      <td>Sucursal</td>
      <td><input type="text" name="sucursal" value="<% if  isObject(rs) then response.Write(rs.fields("sucursal").value) %>" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2" align="center">
      <input type="hidden" name="action" value="<% if isObject(rs) then response.Write("update") else response.Write("insert") %>" />      
      
      <input type="submit" name="Submit" value="Enviar" /></td>
    </tr>
  </table>
</form>
</body>
</html>

En la página de inicio no hay problema, me muestra el contenido en mi BD y los links, pero al querer ir a la página donde se insertan los datos me aparece el siguiente error:

ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.
/Ventas/detalle.asp, línea 57


y la línea 57 es la siguiente:

Código:
<td><input type="text" name="rut" value="<% if isObject(rs) then response.Write(rs.fields("rut").value) %>" /></td>
Cuál es el error??