• Miércoles 13 de Noviembre de 2024, 08:06

Autor Tema:  Error De Insertado En Tabla Access  (Leído 1686 veces)

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Error De Insertado En Tabla Access
« en: Viernes 10 de Junio de 2005, 14:29 »
0
Yo que estoy ya acostumbrado a manejar tablas, datarows y datasets en el .Net, me voy al ASP.Net y tengo que pedir lo tipico, los datos de un tipo para registrarle en un foro (o enviarle correo basura por un tubo) y al intentar hacer el update con el data adapter me revienta el código diciendo que le tengo que pasar una consulta actualizable.
¿Qué coño es eso?

Veamos, yo tengo una base de datos Access llamada Perfiles en el directorio virtual donde estoy trabajando.
La conexión, rellenado del dataset Datos y la creación de los comandos de inserción lo hago así.
Código: Text
  1.  
  2. Dim Ruta As String
  3. Dim CustomCB As OleDbCommandBuilder
  4.  
  5. Ruta = Server.MapPath("/formulario/Perfiles.mdb")
  6. Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Ruta
  7. Adapt = New OleDbDataAdapter("SELECT id_usuario, nombre, apellidos, password, fecha, email, localidad, genero, foto, permiso FROM T_perfil", Cn)
  8. Datos = New DataSet
  9. Cn.Open()
  10. Adapt.Fill(Datos, "T_Perfil")
  11. TablaPerfil = Datos.Tables("T_perfil")
  12.  
  13. 'Generación de los códigos de modificación
  14. CustomCB = New OleDbCommandBuilder(Adapt)
  15. CustomCB.QuotePrefix = "["
  16. CustomCB.QuoteSuffix = "]"
  17. CustomCB.RefreshSchema()
  18. Cn.Close()
  19.  
  20.  
Hasta ahí todo correcto, espero.
Ahora veamos como creo una nueva fila, la relleno y se la inserto al dataset por donde le quepa.
Código: Text
  1.  
  2. Cn.Open()
  3.  
  4. Ficha = Datos.Tables("T_perfil").NewRow()
  5. Ficha("nombre") = Me.TNombre.Text
  6. Ficha("apellidos") = Me.TApellido.Text
  7. Ficha("password") = Me.TPassword.Text
  8. Ficha("email") = Me.TEmail.Text
  9. Ficha("genero") = Me.RBGenero.SelectedValue
  10. Ficha("localidad") = Me.TLocalidad.Text
  11. If Me.CTerminos.Checked Then
  12.    Ficha("permiso") = True
  13. Else : Ficha("permiso") = False
  14. End If
  15.  
  16. Datos.Tables("T_perfil").Rows.Add(Ficha)
  17. Adapt.Update(Datos, "T_perfil")
  18.  
  19. Datos.AcceptChanges()
  20. Cn.Close()
  21.  
  22.  
Esto sería lo básico, ya me preocuparé de filtrar los errores y demás pasteles cuando funcione, porque al llegar al adapt.update me dice que no le sale de los comandos hacerlo y me suelta el mensaje de que quiere una consulta actualizable.

Yo estoy ya que no veo, asi que por favor, ¿alguno de vosotros logra ver en qué me he equivocado y me puede dar la colleja salvadora que me dirija por el camino correcto?

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Error De Insertado En Tabla Access
« Respuesta #1 en: Martes 14 de Junio de 2005, 10:23 »
0
Nada, que sigo sin poder insertar nada en la tabla Access.
¿Qué puede estar fallando?
¿Hay que tener algo en cuenta a la hora de trabajar cin una base de datos access localizada en el servidor?

En vez de insertar he probado meter a mano un par de lineas y de mostrarlas por pantalla, y funciona, por lo que la cadena de conexión no debería ser el problema.
¿Podría ser por la generación automatica de los comandos?

Por si acaso estoy intentando hacer la inserción por medio de comandos, pero tambien me falla y me dice que hay un error en la sentencia Insert into.
Esto es lo que he hecho
Código: Text
  1.  
  2. Dim sql As String
  3. Dim loquesalga as integer
  4.         Try
  5.             sql = "insert into T_perfil(nombre,apellidos,password,email,localidad) "
  6.             sql = sql + "Values('Paco','Garcia','11234','algarroba@hotmail.com','Cuenca')"
  7.  
  8.             Dim Cmd As New OleDbCommand(sql, Cn)
  9.             Cn.Open()
  10.             loquesalga=Cmd.ExecuteNonQuery()
  11.             Cn.Close()
  12.         Catch ex As Exception
  13.             Response.Write("Excepcion:" + ex.ToString())
  14.         End Try
  15.  
  16.  

La instruccion de sql que uso para insertar no debería ser el problema,ya que la he usado tambien a mano en un editor sql y funciona perfectamente.
¿Puede ser porque uso un autonumerico como clave principal?

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Error De Insertado En Tabla Access
« Respuesta #2 en: Martes 14 de Junio de 2005, 15:07 »
0
Hola,

Lo del autonumerico no creo que sea, ya que no intentas establecer ese valor a traves de la insert.

No se lo que te puede estar pasando, pero si puedes postea el mensaje de error que te da, a ver si así podemos ayudarte.

Saludos y suerte.
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Error De Insertado En Tabla Access
« Respuesta #3 en: Martes 14 de Junio de 2005, 20:33 »
0
Diox... El que no sabe es como el que no ve...
Ya descubrí cual era el fallo que me ha tenido 3 días estancado en la misma linea de código.

El error que me saltaba me decía "La consulta debe ser actualizable", cuando lo que los kpullos de microsoft deberían haber puesto era "Mira, que la base de datos Access está puesta como solo lectura para los usuarios y así solo te va a dejar hacer selects."  <_<

Quitándole el "solo lectura" funciona, pero supongo que si en la cadena de conexión me identifico como administrador me dejará sin tener que dejar la base tan desprotegida.

Ke duro es ser programador...  :oops: