ID en base de datos

Iniciado por TheGhost(Z), 19 Junio 2009, 20:09 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola, amigos.

Veran, tengo una base de datos con tablas Albaran y RecibosDePago. y las ID's de cada tabla son autonumericas. Pues mi problema esta en que al crear un Albaran tambien tengo que crear un ReciboDePago, pero mi problema esta que como relaciono el Albaran con RecibosDePago, si cada uno generan sus ID automáticamente.

he pensado en una ves guardado el albaran, ya se genera la ID. y esta ID tendria que asignarla al ReciboDePago. Pero para eso tendría que cerrar el albaran, luego buscarlo y abrirlo. cosa que asi ya sabria el ID que se asigno a mi albaran. luego recien crear el ReciboDepaGO.. pues como veran estoy hecho un lio.. ayuda porfavor..


Spider-Net

Pues no entiendo muy bien del todo cual es tu problema la verdad, pero si quieres relacionar un albarán y un recibo porque no usas una tabla intermedia y creas una relación?

Albarán ------------- corresponde -------------recibo
idalbaran                  ida - idr                      idrecibo

En la relación guardas el id de cada  uno de ellos y cuando quieras saber que albarán corresponde con qué recibo solo tienes que consultar la tabla corresponde. Es como siempre se ha hecho no?

De todos modos no sé si entendí del todo bien tu pregunta.

cassiani

depende del tipo de relación que necesites, puedes hacerla de uno a uno ó de uno a muchos, colocando un campo foraneo en la tabla recibos.. pero, eso no tiene nada que ver con vb6  :-\

seba123neo

Hola, pues con un ID  :P...no importa que haya un registro autonumerico...si queres relacionarlas es con un ID y no hay otra...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

TheGhost(Z)

Lo que deseo es: Recibir el último ID de una inserción. Practicamente algo igual como se ve aqui: http://www.desarrolloweb.com/articulos/1433.php

seba123neo

hace un Max(idregistro) y listo...despues le sumas 1 para el nuevo registro...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

SKL (orignal)

Cita de: seba123neo en 20 Junio 2009, 19:55 PM
hace un Max(idregistro) y listo...despues le sumas 1 para el nuevo registro...

Ojo aca... si queres visualizar esto... tenes que hacer asi...

SELECT MAX(Campo) AS Variable FROM tabla

entonces si queres visualizar El campo maximo de esa tabla haces lo siguiente

debug.print RecordeSet("variable")

el debug.print puede ser reemplazado por otra variable o un txt y a la vez poder sumarle un valor.

PD: a mucha gente le confunde y no sabe como sacar el valor despues de hacer el query

saludos

XcryptOR

#7
de esta forma adiciono un nuevo registro cuando el valor de este es autonumerico, hago la consulta primero y al valor obtenido del campo ID le agrego 1:

Código (vb) [Seleccionar]
With RecorsetNuevoRegistro
       .Open "Select campo From tabla ORDER BY ID", ActiveConnection:="mi cadena conexion", _
       CursorType:=adOpenKeyset, LockType:=adLockOptimistic
       .MoveLast
       valornuevaid = !ID + 1
       .Close
End With


con respecto a lo de la relación que deben tener las tablas eso ya te lo explico muy bien cΔssiΔnі y es independiente de vb.

saludos  ;D



TheGhost(Z)

Hola, XcryptOR. Me podrías explciar esto, xq me parece interesante el código.

Supongamos que tengo la tabla Clientes con dos campos ID (Autonumerico) y Nombre (Char)

Paso1
Inserto un registo.
Dim Rs As New Recorset
Rs.Open "Clientes"
Rs.AddNew
Rs!Nombre = TheGhost(Z)
Rs.UpDate
Rs.Close

Ahora: como obtengo esa id, conciderando que unos x usuarios estan ingresando datos al mismo tiempo.



XcryptOR

agregale la clausula WHERE especificando que vamos a filtrar por Nombre


With RecorsetNuevoRegistro
        .Open "Select campo From tabla WHERE Nombre='TheGhost(Z)' ORDER BY ID", ActiveConnection:="mi cadena conexion", _
        CursorType:=adOpenKeyset, LockType:=adLockOptimistic
        .MoveLast
        valornuevaid = !ID + 1
        .Close
End With