elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  vaciando tablas en access...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: vaciando tablas en access...  (Leído 8,964 veces)
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
vaciando tablas en access...
« en: 4 Julio 2006, 18:04 pm »

bueno llevo buscando informacion sobre como vaciar tablas en access... ya que el truncate no me funciona y con el delete el autoincremental no me lo disminuye... como puedo vaciar una tabla en access?? xk access es tan tiñoso??


En línea

Red Mx
Rojito
Colaborador
***
Desconectado Desconectado

Mensajes: 3.649


Viva México Cabrones...


Ver Perfil WWW
Re: vaciando tablas en access...
« Respuesta #1 en: 4 Julio 2006, 21:43 pm »

buena pregunta

si la tienes enlazada con el ADO o DATA pon un timer con intervalo de 100 ahi le das el codigo de que avance ala primera  despues lo borras y ahi le pones un if cuando llege al EOF termine y pare el timer para que no truene  y asi borrar todo, el timer ponerselo desavilitado y con un boton avilitarlo


En línea

Desarrollar Malware Es Causa De Cancer...
soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: vaciando tablas en access...
« Respuesta #2 en: 4 Julio 2006, 23:28 pm »

Hola
Pues borrar todo
Código:
dim Base as database
set base=opendatabase("c:\...\datos.mdb")
base.execute "delete * from tabla"

Para cambiar el autoincremental lo que tienes que hacer es eliminar el campo y volverlo a crear.

Para ello deberás acceder a la colección de índices (habitualmente está indexado) y borras el índice, luego accedes a la colección te tablas y te situas en la que necesitas y allí accedes a la colección de campos y lo eliminas.

Luego lo vuelves a crear.

Ya puestos tambien podrías hacer un compactdatabase para que quedara físicamente vaciada.

Un saludo

En línea

Callar es asentir ¡No te dejes llevar!
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: vaciando tablas en access...
« Respuesta #3 en: 5 Julio 2006, 01:48 am »

Hola
Pues borrar todo
Código:
dim Base as database
set base=opendatabase("c:\...\datos.mdb")
base.execute "delete * from tabla"

Para cambiar el autoincremental lo que tienes que hacer es eliminar el campo y volverlo a crear.

Para ello deberás acceder a la colección de índices (habitualmente está indexado) y borras el índice, luego accedes a la colección te tablas y te situas en la que necesitas y allí accedes a la colección de campos y lo eliminas.

Luego lo vuelves a crear.

Ya puestos tambien podrías hacer un compactdatabase para que quedara físicamente vaciada.

Un saludo



uhm...
y no tiene un comando parecido al truncate de sql?
si no lo tiene pos otra cosa tiñosa más que tiene access...xD
otra preguntita... para enviar sentencias en los updates que solo afecten a un registro en donde se supone kque va intercalado el TOP 1 ?


gracias a todos por responder
En línea

soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: vaciando tablas en access...
« Respuesta #4 en: 5 Julio 2006, 20:12 pm »

Citar
¿no tiene un comando parecido al truncate de sql?
compactdatabase "recorta" el tamaño de la base de datos hasta el mínimo en que quepan todos los registros.

Es una buena costumbre usarlo en bases de datos que se usan mucho para evitar problemas de bases de datos corruptas.

Citar
para enviar sentencias en los updates que solo afecten a un registro en donde se supone kque va intercalado el TOP 1 ?

No te entiendo bien, en principio tienes que buscar una claúsula where que la cumpla solo el registro que tu quieres.

Por eso es una muy buena costumbre en cada tabla crear un campo autonumérico que sirva para identificar el registro sin ninguna duda.

 ;D
En línea

Callar es asentir ¡No te dejes llevar!
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: vaciando tablas en access...
« Respuesta #5 en: 5 Julio 2006, 22:58 pm »

Citar
¿no tiene un comando parecido al truncate de sql?
compactdatabase "recorta" el tamaño de la base de datos hasta el mínimo en que quepan todos los registros.

Es una buena costumbre usarlo en bases de datos que se usan mucho para evitar problemas de bases de datos corruptas.
yo lo que digo es que haga el truncate... el truncate en mysql lo que hace es vaciarte la tabla de registros, y los autoincrementales inicializarlos a 0 registros (ya que no hay registros en la tabla)...
el compactdatabase  según he leído/ me has explicado no borra registros...

Citar
Citar
para enviar sentencias en los updates que solo afecten a un registro en donde se supone kque va intercalado el TOP 1 ?

No te entiendo bien, en principio tienes que buscar una claúsula where que la cumpla solo el registro que tu quieres.

Por eso es una muy buena costumbre en cada tabla crear un campo autonumérico que sirva para identificar el registro sin ninguna duda.

 ;D

Citar
cuando yo envio una sentencia en mysql en la que le digo...
Código:
update tablita set pepinos=99 where pepinos<10  LIMIT 1
entonces lo que esa sentencia me hace es actualizarme el primer pepinos que encuentre menor de 10... en access según he descubierto en vez de poner LIMIT se usa algo parecido... el TOP
ejemplo, vamos a seleccionar un único registro que cumpla la caracteristiac solicitada(aunque no tenga lógica...):
Mysql
Código:
select pepinos from tablita where pepinos<10 limit 1
Access
Código:
select TOP 1 pepinos from tablita where pepinos<10

a eso me refería.... en access en el update donde se coloca el TOP xk poniendolo en la misma zona que en el select me da error... aligual tampoco se puede actualizar un solo registro... otra tiñosidad de access

xk le quiero añadir el LIMIT/TOP al update?
pues xk como tengo un campo autoincremental con un nº único ... solo necesito actualizar 1... y no recorrer toda la tabla tras habermelo actualizado ya el que deseo... nose si será correcto pero por eso me interesa... aunque ya se esta convirtiendo en ALGO PERSONAL contra access ... xD
En línea

soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: vaciando tablas en access...
« Respuesta #6 en: 5 Julio 2006, 23:19 pm »

¿Y si tienes los registros con un campo autoincremental para que quieres el limit?
Código:
base.execute "delete * from tabla where codigo=tuvalor
¿Que ganas añadiendo a eso un límite si ya le has dicho que borre los códigos que tienen valor X y ese valor X es un valor único en la tabla porque es un campo autoincremental?

 :rolleyes:
En línea

Callar es asentir ¡No te dejes llevar!
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: vaciando tablas en access...
« Respuesta #7 en: 6 Julio 2006, 02:31 am »

¿Y si tienes los registros con un campo autoincremental para que quieres el limit?
Código:
base.execute "delete * from tabla where codigo=tuvalor
¿Que ganas añadiendo a eso un límite si ya le has dicho que borre los códigos que tienen valor X y ese valor X es un valor único en la tabla porque es un campo autoincremental?

 :rolleyes:

pues ave si logro explicarme... xd

por ejemplo...
 si yo quiero borrar un registro de una tabla que contiene 1000000... y envio la consulta
Código:
delete * from table where pepito="sodomita"
eso me borraria todas las que cumpliesen el requisito del where...
 si en el where tengo una condición basada en un campo autoincremental... pues se supone que solo voy a encontrar uno que borrar y la búsqueda va recorrer 1000000 de registros , usease todos...
(en los campos autoincrementales nose si eso es cierto)

 si en el where tengo una condición basada en un campo no autoincremental... y aun asi solamente afecta a 1 registro,
me va a borrar 1 registro... pero va a recorrerse 1000000...

si yo le añado un LIMIT/TOP 1 , en cuanto me borre uno parara y no recorrera 1000000 sino solamente hasta que borre uno...
a eso me referio con la utilidad del LIMIT/TOP, para que quiero recorrer todo si se cuantos va a encontrar/borrar/actualizar ...etc...

referido a lo de truncate, ¿tendré que asumir k access no tiene ningún comando para vaciar tablas?

gracias de antemano por responder soplo ... iluminame con tu sabiduria  ;D :rolleyes: :P
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: vaciando tablas en access...
« Respuesta #8 en: 6 Julio 2006, 19:31 pm »

por cierto... he probado a borrar los campos autoincrementales y luego a volverlos a crear y me sigue guardando el autoincremental de antes ... xD
En línea

soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: vaciando tablas en access...
« Respuesta #9 en: 6 Julio 2006, 20:50 pm »

Que yo sepa access no tiene ningún comando para vaciar tablas jajaja

Citar
por cierto... he probado a borrar los campos autoincrementales y luego a volverlos a crear y me sigue guardando el autoincremental de antes ... xD
Eso es porque no has borrado el campo y lo has vuelto a crear. Si lo hubieras hecho empezaría de nuevo por 1

 ;D
En línea

Callar es asentir ¡No te dejes llevar!
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tablas relacionadas con Access 2007 - VB2008
Programación Visual Basic
bluebox@argentina.com 1 2,015 Último mensaje 6 Septiembre 2014, 05:34 am
por XresH
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines