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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda con registros y bases de datos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con registros y bases de datos  (Leído 1,672 veces)
CARRY-ON

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Ayuda con registros y bases de datos
« en: 21 Octubre 2006, 02:48 am »

necesito crear un formulario que se conecte a una base de datos  los campos requeridos son codigo del producto este tiene que ser generado aleatoriamente

producto
cantidad
precio
bueno con los ultimos datos no tengo problema los conecto ala base de datos y todo pero  que el codigo tiene que ser generado automaticamente en eso no hay proble ya que access tiene un opcion para hacerlo pero el problema esta al borrar un registro
ejemplo

borro el registro 3 y tengo actualmente 25 registros y cuando quiero agregar otro registro me da como numero el 26 pero lo que yo quiero es que me ocupe el registro menor que este desocupado en este caso el 3 y si estuviera el registro 3 y 1 desocupado que me ocupe el menor osea el 1 no se si me explico cualkier duda me preguntan

lo que quiero es un porcedimiento funcion o lo que sea que me resuelva ese problema


En línea

ZuKaR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda con registros y bases de datos
« Respuesta #1 en: 21 Octubre 2006, 03:11 am »

Buenas CARRY

El problema que plantes, de base, está mal ... Me explico:

Si hablamos que es un código producto, no es muy lógico que te lo autogenere, dado que ese código producto irá relacionado (supongo) con otra tabla que se llame Producto (por ejemplo) donde el código producto de la principal y de la de producto se relacionan mediante el código producto.

Si quieres saber qué código de producto del principal, es el 2 en la tabla producto, mirarías el campo descripción de la tabla y dirías ... 2 = Pimientos

El autonumérico se utiliza, normalmente para indexar las búsquedas, para facilitar el trabajo al motor de búsquedas. Normalmente, se recomienda que se indexen. Un autonumérico, no debería considerarse código de alguna tabla relacional. Por eso comento que está mal planteado, a nivel estructural tu cuestión.

Explica un poco qué es lo que querrías hacer, y miramos de plantear el diseño de la tabla, para que sea correcto. A nivel diseño funcional.

Salu2

necesito crear un formulario que se conecte a una base de datos  los campos requeridos son codigo del producto este tiene que ser generado aleatoriamente

producto
cantidad
precio
bueno con los ultimos datos no tengo problema los conecto ala base de datos y todo pero  que el codigo tiene que ser generado automaticamente en eso no hay proble ya que access tiene un opcion para hacerlo pero el problema esta al borrar un registro
ejemplo

borro el registro 3 y tengo actualmente 25 registros y cuando quiero agregar otro registro me da como numero el 26 pero lo que yo quiero es que me ocupe el registro menor que este desocupado en este caso el 3 y si estuviera el registro 3 y 1 desocupado que me ocupe el menor osea el 1 no se si me explico cualkier duda me preguntan

lo que quiero es un porcedimiento funcion o lo que sea que me resuelva ese problema


En línea

CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Ayuda con registros y bases de datos
« Respuesta #2 en: 21 Octubre 2006, 03:40 am »

pues tendiras hacer una consulta a la BD para ordenar los datos por el "codigo" y luego poner un For para recorrer cada uno sacar el numero del codigo

private funtion EncontrarCodigo() as Long
dim bd as database
dim tb as recodset
dim nuevocodigo as long

Encontarcodigo = 0

'Abres la BD
set bd = workspaces(0).opendatabase("base de datos")
'Abres ta labla y la ordenas por codigo
set tb = bd.openrecodset("SELECT * FROM Tabla ORDER BY Codigo ASC;")

nuevocodigo = 1
do while not(tb.eof)
  'Checas si el nuevo codigo existe, si ya existe se incrementa, si no sale del bucle y listo ya tienes tu codigo
   if nuevocodigo <> tb!Codigo then
     'Encontraste un hueco en los codigos
     Encontarcodigo = nuevocodigo
     exit do
   end if

   tb.movenext
   nuevocodigo = nuevocodigo+1

loop

'Cierras la tabla y la BD
tb.close
bd.close

'liberas la memoria
set tb = nothing
set bd = nothing

end function



la funcion te regresa 0 en caso de alguna falla o un valor <> de 0 en caso de haber encontrado un "codigo", espero y te sirva de algo este ejemplo
En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
ZuKaR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Ayuda con registros y bases de datos
« Respuesta #3 en: 22 Octubre 2006, 22:01 pm »

la función que publica CeLaYa te será útil a nivel "visual" pero a nivel de estructura de base de datos, lo que comentas

Cita de: CARRY ON
borro el registro 3 y tengo actualmente 25 registros y cuando quiero agregar otro registro me da como numero el 26 pero lo que yo quiero es que me ocupe el registro menor que este desocupado en este caso el 3 y si estuviera el registro 3 y 1 desocupado que me ocupe el menor osea el 1 no se si me explico cualkier duda me preguntan


en access no es posible porque no tiene ninguna herramienta que lo haga. Hice la prueba con el access compactando la bd pero nada ... Siempre cuando creas un registro nuevo en la BdD, te pone el siguiente índice.

El procedimiento que te comenta el amigo CeLaYa te servirá pero si quieres guardar el registro, siempre te creará "el siguiente".

Salu2 a los 2 y al foro en general.
En línea

CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Ayuda con registros y bases de datos
« Respuesta #4 en: 23 Octubre 2006, 14:48 pm »

creo que para hacer eso tendrias que hacer esto

private funtion EncontrarCodigo() as Long
dim bd as database
dim tb as recodset
dim nuevocodigo as long
dim Encontrado as Boolean

Encontarcodigo = 0

'Abres la BD
set bd = workspaces(0).opendatabase("base de datos")
'Abres ta labla y la ordenas por codigo
set tb = bd.openrecodset("SELECT * FROM Tabla ORDER BY Codigo ASC;")

for nuevocodigo = 1 to tb.recordcount
   Encontrado = False
   do while not(tb.eof)
     if nuevocodigo = tb!Codigo then
          Encontrado = True
          exit do 'El codigo ya existe
     tb.movenext
     if encontrado = false then exit for
    loop
next nuevocodigo

'Cierras la tabla y la BD
tb.close
bd.close

'liberas la memoria
set tb = nothing
set bd = nothing

end function



si tienes pocos registros te servira, pero conforme vaya creciendo tu BD se va a hacer muy lento, lo que hago aqui es checar si el Codigo "1"  existe en la BD recorriendo cada uno de los registros, si ya existe se pasa al "2" y asi hasta que el codigo en cuestion no esta dentro de la tabla.
En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
CARRY-ON

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Re: Ayuda con registros y bases de datos
« Respuesta #5 en: 23 Octubre 2006, 22:27 pm »

Buenas CARRY

El problema que plantes, de base, está mal ... Me explico:

Si hablamos que es un código producto, no es muy lógico que te lo autogenere, dado que ese código producto irá relacionado (supongo) con otra tabla que se llame Producto (por ejemplo) donde el código producto de la principal y de la de producto se relacionan mediante el código producto.

Si quieres saber qué código de producto del principal, es el 2 en la tabla producto, mirarías el campo descripción de la tabla y dirías ... 2 = Pimientos

El autonumérico se utiliza, normalmente para indexar las búsquedas, para facilitar el trabajo al motor de búsquedas. Normalmente, se recomienda que se indexen. Un autonumérico, no debería considerarse código de alguna tabla relacional. Por eso comento que está mal planteado, a nivel estructural tu cuestión.

Explica un poco qué es lo que querrías hacer, y miramos de plantear el diseño de la tabla, para que sea correcto. A nivel diseño funcional.

Salu2

*********************************
Si esta mal plantiado como lo planteo mejor ??  yo solo de como lo estaba haciendo pero si no se puede o hay alguna manera mejor como seria di pregunte es por que no estoy seguro como hacerlo si no e puede con auto numerico como puedo hacerlo para solucuionar mi problema de que el codigo se auto genere y que si se elimina uno el proxima ocupe el valor que se elimino

probare el codigo que me dio celaya  cualquier cosa la posteo aca
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda ejercicio de registros
Programación C/C++
skatres 8 3,501 Último mensaje 16 Enero 2012, 00:50 am
por Xandrete
Ayuda php bases de datos
PHP
Senior++ 3 2,154 Último mensaje 21 Diciembre 2013, 18:39 pm
por Senior++
Conectarse a bases de datos externas AYUDA POR FAVOR
Desarrollo Web
pakareh 2 1,674 Último mensaje 25 Junio 2014, 09:57 am
por pakareh
[AYUDA] Sincronizar tablas de dos bases de datos
Bases de Datos
darg94 1 2,864 Último mensaje 17 Julio 2014, 18:21 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines