Foros del Web » Programación para mayores de 30 ;) » Programación General »

Me voy a desesperar (DB)

Estas en el tema de Me voy a desesperar (DB) en el foro de Programación General en Foros del Web. Ahora cuando ejecuto el codigo de añadir en la base (el siguiente codigo): Public Sub Añadir() Dim wks As Workspace Dim base As Database Dim ...
  #1 (permalink)  
Antiguo 08/09/2002, 09:02
 
Fecha de Ingreso: abril-2002
Mensajes: 32
Antigüedad: 22 años
Puntos: 0
Me voy a desesperar (DB)

Ahora cuando ejecuto el codigo de añadir en la base (el siguiente codigo):
Public Sub Añadir()
Dim wks As Workspace
Dim base As Database
Dim rec As Recordset
Dim mensaje As Integer
Dim i As Integer
Set wks = CreateWorkspace("", "admin", "", dbUseJet)
Set base = wks.OpenDatabase("Disco2.mdb")
Set rec = base.OpenRecordset("Informacion", dbOpenTable)
rec.Index = "Informacion"
rec.Seek "=", frmPrincipal.Text1(0).Text
If rec.NoMatch Then
rec.AddNew
rec.Fields("NombreDisco") = frmPrincipal.Text1(0).Text
rec.Fields("Grupo") = frmPrincipal.Text1(1).Text
rec.Fields("Original/Pirata") = frmPrincipal.Text1(2).Text
rec.Fields("Fecha") = frmPrincipal.Text1(3).Text
rec.Update
mensaje = MsgBox("bien")
Else: mensaje = MsgBox("mal")
End If
rec.Close
For i = 0 To 4
frmPrincipal.Text1(i).Text = ""
Next i

End Sub


Me pone Error3015 "Informacion" no es un indice de esta tabla. Consulte la coleccion indexes del objeto tabledef para determinar los nombres de indice valido.

ç¿COmo hago yo eso?
  #2 (permalink)  
Antiguo 09/09/2002, 03:29
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años
Puntos: 2
Re: Me voy a desesperar (DB)

Hola meruelo,

¿Sabes sql? Para insertar un registro en una BBDD estás:
- Abriendo una tabla entera (que si llega a ser muy grande será un proceso bastante lento)
- Buscar si existe el dato por el índice Información (el error que te da es que no existe un índice para esa tabla que se llame Informacion, así que tendrás primero que crearlo en Access, en el diseño de la tabla, o desde código)
- Finalmente insertar el registro vía recordset.

Mucho mejor si haces un insert normal y corriente en la BBDD y te olvidas de recordsets, simplemente:

...
Set base = wks.OpenDatabase("Disco2.mdb")
base.execute "insert into .... values ...."
...

Antes te has tenido que crear el índice sin duplicados en la tabla (ves a Access, diseño de tabla y modificas el valor "indexado" de la ficha general sobre el campo sobre el cual no quieres duplicados). Al sub le pones un tratamiento de errores para pillar el error que te lanza si tratas de duplicar el índice, deberás saber el número ... y ya está.

Saludos.






Saludos
  #3 (permalink)  
Antiguo 09/09/2002, 04:39
 
Fecha de Ingreso: abril-2002
Mensajes: 32
Antigüedad: 22 años
Puntos: 0
Re: Me voy a desesperar (DB)

Pues a mi no me sale. Ni puede crear indices ni nada de nada. Me voy a tirar por la ventana...Me lo puedes explicar "mas detalladamente"??
  #4 (permalink)  
Antiguo 09/09/2002, 05:52
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años
Puntos: 2
Re: Me voy a desesperar (DB)

Paso a paso:
1- Abres Disco2.mdb
2- Vas a la ficha de Tablas
3- Click sobre la tabla Información
4- Pulsa el botón de Diseño
5- Click sobre el campo NombreDisco
6- Abajo tienes una serie de filas con información sobre el campo, la última de ellas pone Indexado, elige "Sí (sin duplicados)". Muy peligroso, pero por lo que veo es lo que quieres hacer, ¿has tenido en cuenta discos de distintos grupos que se llamen igual? No es algo muy extraño. Da igual, a lo que vamos.
7- Cierras y guardas los cambios

----> Ya has creado el índice sobre ese campo.

Vamos a VB y ejecutas el insert, te ha de quedar algo así:

Public Sub Añadir()
Dim base As Database
dim txtSQL as String
Set base = OpenDatabase("Disco2.mdb")
txtSQL="insert into Informacion (NombreDisco,Grupo,Original/Pirata,Fecha) values ('" & frmPrincipal.Text1(0).Text & "','" & .....
base.execute txtSQL
base.close
End Sub

El control de errores lo dejo para ti y tampoco he creado ningún espacio de trabajo JET. Pero bueno, debería funcionarte.

Saludos.
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 10:24.