¿ Como puedo hacer un tabla con muchos campos que se pueda escribir mucho registros ?

Tengo una tabla con muchos campos ( 170 ), es necesario no puedo poner en dos tablas, pero hay un momento que me dice que el registro es demasiado grande, su error es:

El registro es demasiado grande. (Error 3047)

Definió o importó una tabla con registros mayores de 2 K. Este error se produce al introducir datos en el registro (no al definir la estructura de la tabla). Redefina la tabla acortando algunos campos, quitando campos innecesarios o moviendo algunos campos a otras tablas.

¿No puedo hacer esa tabla tenga muchos registros? ¿Y qué me deje escribir registros?

2 respuestas

Respuesta
2

Jorge, convendría que primero vieras

https://support.microsoft.com/es-es/office/especificaciones-de-access-0cf3c66f-9cf2-4e32-9568-98c1025bb47c 

Porque quizá estés superando sus límites.

Siempre doy este consejo. Da el tamaño a los campos de lo que más o menos van a contener. Por ejemplo, si un campo va a contener sólo teléfonos, ¿para que darle un tamaño de 60(por poner algo). Si va a contener Email, ¿para qué darle un tamaño de 255? Si alguien tiene un email con 255 caracteres yo no le escribiría, le tiraría de las orejas.

Si un campo sólo va a contener números hasta 255, ponerlo como byte

Si sólo va a contener número hasta 32000 ponerlo como entero

Etc.

Lo he mirado pero no me aclaro lo de los caracteres, por ejemplo 64 cuando puedo escribir?

Lo de 64 se refiere a que el nombre de un control, campo, formulario, objeto, etc no puede superar los 64 dígitos. Puedes llamarla a una tabla Clientes, pero no puedes llamarla En un rincón de La Mancha de cuyo nombre no quiero acordarme, no ha mucho tiempo...

Tengo 170 campos entrado en tablas para cambiarlos caracteres de 255 que tenia en todos los campos, y cuando los he cambiado, me pone "demasiados campos definidos", buf y no los puedo guardar no me deja :-(

Pues es raro, ya que Access permite hasta 255 campos. De todas formas, sí se puede usar varias tablas. Por eso se dice que Access pertenece al grupo de bases de datos relacionales. Por ejemplo y para no escribir mucho, vamos a suponer que divides los 180 campos en tres tablas de 60. Puedes relacionar la principal, que supongamos que tiene un IdCliente, autonumérico, con el Idcliente numérico de otra en una relación uno a uno. Y cuando rellenes de datos el formulario Prrincipal puedes usar algo como

Docmd.runsql" insert into Tabla2(idcliente, dirección,......) values(......)

Así, como insertas en la segunda tabla el mismo Idcliuente de la primera, estarán perfectamente relacionadas.

Si lo divido en dos tablas y las relaciono, ¿la segunda tabla se puede ver junto con la primera?, es para un negocio de un familiar, tenían una base de datos works y yo quiero sus clientes que son 10.546 con los mismos campos en un formulario, Docmd.runsql" insert into Tabla2(idcliente, dirección,......) values(......) donde lo s escribo?

Gracias

Si tengo la Tabla Clientes con unos campos y la tabla ClientesB con otros campos. La primera tiene un IdCliente Autonumérico y la segunda un Idcliente( también clave) numérico y los relaciono como puedes ver en la imagen

Creo un formulario con ellas dos ( o tres, cuatro,...) donde te pongo en color los cuadros de texto correspondientes a los campos de Clientes B para que veas que no pasa nada.

Relleno los datos

y cierro, o me voy a otro registro y me deja la tabla Clientes como en la imagen

Fíjate en el Idcliente. Y la tabla Clientes B como

Puedes ver que tiene el mismo Idcliente que la tabla Clientes. Sería como una continuación del mismo registro.

Pero claro tengo un buscador que me busca en un formulario con todos los campos que tengo,

Public Sub AbreFormAgenda1(Modo As Byte, Optional Filtro As String)
DoCmd.OpenForm "buscar_cliente", acDesign, , , , acHidden

Select Case Modo
Case 1
DoCmd.OpenForm "buscar_cliente", , , , acFormAdd
Case 2
DoCmd.OpenForm "buscar_cliente"
Case 3
DoCmd.OpenForm "buscar_cliente", , , Filtro, acFormReadOnly
End Select
End Sub

supongo qeu lo tendre qeu buscar sobre una consulta las dos tablas, que pongo l qeu te he mandado? DoCmd.OpenForm, supongo q tendre que modificar

Gracias

Me sorprende la instrucción, ya que para buscar algún registro abres un formulario en vista diseño y oculto. No digo nada, ya que no sé la construcción de los formularios, etc. pero me sorprende.

Imagínate que tienes un combinado llamado Elegir donde vas a buscar, por ejemplo, los registros en que su país sea el que elijas.

Siempre puedes decir

me.recordsource="select * from Clientes inner join ClientesB...........where pais='" & me.elegir & "'"

Es decir, que el origen de registros del formulario sean aquellos de la unión entre Clientes y clientesB en que pais sea igual al que acabas de elegir.

Respuesta
1

Para superar estos límites vaya pensando en migrar a un servidor de datos, personalmente utilizo PostgreSQL, no tendrá este límite. ¿La información proviene de una importación de Excel?

si, viene una importación de excel, y donde pongo el servidor postgresql?

Cuando digo servidor PostgreSQL me refiero a pasar la base de datos a este entorno pero para que no se complique olvídese de esto por ahora. La respuesta de dividir es una opción, no obstante, igualmente puede seguir reciendo el mensaje de error cuando vaya a ingresar información en el campo, en este caso le recomiendo revisar como esta definido en la tabla es posible que se deba definir como "Memo" o "Texto largo". Si no tiene problema envíeme a mi correo [email protected] el archivo de Excel puede ser solo una parte del contenido, igualmente, la base de datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas