Mi db código de acceso es el siguiente:

set recordset = Server.CReateObject("ADODB.Recordset")
set cmd1  = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = Conn //connection object already created
cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"
cmd1.CommandType = adCmdText
set prm = cmd1.CreateParameter("@prm", 200, 1,200 , "development")
cmd1.Parameters.Append prm
set recordset = cmd1.Execute

Pero no hay ningún db de golpe va. Por favor ayuda con esto. Estoy utilizando sql server 2005.

Gracias.

  • Donde usted dice «conexión de objeto ya creado’ – puede publicar el código completo? Se que la apertura de la conexión correctamente? ¿Te da algún mensaje de error, o simplemente un conjunto de registros vacío? (Y es que el uso de On Error Resume Next?)
  • Lo sé porque cuando yo simplemente eliminar los parámetros de la parte y de la «cláusula where» de la consulta, devuelve los registros. También estoy usando el analizador de sql para comprobarlo, pero no de golpe se va a la db. Ningún mensaje de error se muestra.
  • Es adCmdText definido en cualquier lugar? No hacer referencia a ninguna otra ADO constantes por su nombre.
  • Sí se define como Const adCmdText = &H0001
  • Yo creo que si es que no golpear la base de datos, podría ser que se le está dando el error, pero está siendo suprimida? Pero da el error cuando pongo el nombre de parámetro «@prm» en lugar de «?» en mi consulta.. ¿hay alguna manera de saber qué está pasando?
  • Ver la respuesta que he publicado para usted en: stackoverflow.com/questions/7659253/…
  • Ver la respuesta que he publicado para usted en: stackoverflow.com/questions/7659253/…

4 Comentarios

  1. 4

    En mi código, esto es ¿cómo puedo obtener un conjunto de registros de un comando:

    Set rs = server.createobject("ADODB.Recordset")
    Set cmd = server.createobject("ADODB.Command")
    
    cmd.ActiveConnection = Conn //connection object already created
    cmd.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"
    cmd.CommandType = adCmdText
    cmd.CommandTimeout = 900 
    
    set prm = cmd.CreateParameter("@prm", 200, 1, 200, "development")
    cmd.Parameters.Append prm
    
    ' Execute the query for readonly
    rs.CursorLocation = adUseClient
    rs.Open cmd, , adOpenForwardOnly, adLockReadOnly

    Espero que ayude

    • No es necesario crear un objeto adicional de la variable prm, en lugar de simplemente combine la generación de la Parameter y la Append() a la Parameters colección. Como Call cmd.Parameters.Append(cmd.CreateParameter("@prm", adVarChar, adParamInput, 200)), a continuación, ajuste el valor utilizando cmd.Parameters("@prm").Value = "development".
    • estos son solo ejemplos basados en el código de operación, la parte importante aquí es cómo abrir el conjunto de registros
    • Seguimiento de cualquiera de lectura – «cmd1» en el «conjunto de prm…» en línea debe leer «cmd». Pero no puedo hacer una edición menos de 6 caracteres.
    • Editado. Gracias
  2. 1

    Me gusta el uso de Parámetros.De actualización, es decir,

    set recordset = Server.CReateObject("ADODB.Recordset")
    set cmd1  = Server.CreateObject("ADODB.Command")
    cmd1.ActiveConnection = Conn //connection object already created
    cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"
    cmd1.CommandType = adCmdText
    cmd1.Prepared = True ' only needed if u plan to reuse this command often
    cmd1.Parameters.Refresh
    cmd1.Parameters(0).Value = "development"
    set recordset = cmd1.Execute
  3. 0

    Parece que no hacen referencia a su nombre de parámetro correctamente en su consulta.

    Trate de sustituir:

    cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"

    con:

    cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = @prm"

    y ver si eso ayuda.

    • También he probado este, pero luego se produce un error que dice «se Debe declarar la variable escalar @prm»
    • esa es la sintaxis en ADO.net no en ADO clásico
    • el uso de @prn es y ado.net característica
  4. 0

    Intenta dejar fuera el nombre del parámetro:

    set prm = cmd1.CreateParameter(, 200, 1,200 , "development")

Dejar respuesta

Please enter your comment!
Please enter your name here