border
VB 6
 
 
  #1 (permalink)  
Antiguo 03-06-2010, 09:47:03
Nuevo Amigo
 
Registrado: jun 2010
Posts: 6
Créditos: 665
cds_dani Aun no valorado
Smile Comprobar si registro existe en ADO

Hola a todos.

Estoy haciendo un pequeño programa para la administracion de una BD en Access 2003. Mi problema es el siguiente:

- Tengo una tabla llamada "Sucursales" (relacionada con otra llamada "Entidades") la cual tiene mas de 69000 registros ya. Entonces, al crear una sucursal nueva, hay que mirar, naturalmente, que no exista ya, para ello lo normal seria buscar en el ADO de las sucursales para ver si ya existe; pero a ver, si yo hago un AddNew, luego ya no puedo moverme de esa posicion (es decir, no puedo usar un Adodc1.Recordset.Find) porque automaticamente se me grabaria ya ese registro.

Habia pensado al comenzar el programa meter todas las sucursales en una lista, y al agregar un registro nuevo, en vez de recorrer el ADO, recorrer la lista, pero aparte de que es un proceso sumamente lento (dado la cantidad de registros que ya posee la BD) ayer me encontre por ahi que como maximo la lista puede tener un maximo de 32767 filas, y no puedo borrar registros de la BD porque se lleva utilizando muchos años.

He buscado ya por muchos foros pero no me queda nada claro.

Mi pregunta es:

- Hay alguna otra manera de hacer lo que quiero?
- Es correcta la forma en la que quiero hacerlo?
- Que me recomendais?

Soy un poco novato en Visual Basic.

Utilizo VB 6.0, Access 2003 y ADODC con DataControl.

Un saludo, y gracias de antemano.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2 (permalink)  
Antiguo 03-06-2010, 11:59:22
Avatar de gilman
Moderador
 
Registrado: feb 2007
Ubicación: Bilbao
Posts: 1.758
Créditos: 28.227
gilman Valoración +2
Predeterminado Re: Comprobar si registro existe en ADO

haz una consulta a la tabla donde tengas las sucursales
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3 (permalink)  
Antiguo 03-06-2010, 12:09:01
Nuevo Amigo
 
Registrado: jun 2010
Posts: 6
Créditos: 665
cds_dani Aun no valorado
Predeterminado Re: Comprobar si registro existe en ADO

Cita:
Empezado por gilman Ver Mensaje
haz una consulta a la tabla donde tengas las sucursales
OK gracias por responder.

Pero como seria la sintaxis??? Tendria que consultar primero por la entidad y luego por la sucursal, ya que los dos campos son clave.

Me podrias ayudar con la sintaxis por favor?? (suponiendo que mi ado se llama adoSuc)

Gracias.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4 (permalink)  
Antiguo 03-06-2010, 13:47:14
Avatar de gilman
Moderador
 
Registrado: feb 2007
Ubicación: Bilbao
Posts: 1.758
Créditos: 28.227
gilman Valoración +2
Predeterminado Re: Comprobar si registro existe en ADO

la select sería algo asi
Código:
SELECT SUCURSAL FROM SUCURSALES WHERE SUCURSAL = 'SUCURSALACTUAL' AND ENTIDAD = 'ENTIDADACTUAL'
poniendo los nombres de la tabla y los campos que correspondan.
Suponiendo que los campos son de tipo texto.
Si la consulta devuelve registros (not rdset.eof) es que la sucursal ya existe.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5 (permalink)  
Antiguo 03-06-2010, 13:50:11
Avatar de J.M.Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 9.293
Créditos: 75.258
J.M.Movilla ha deshabilitado la reputación
Predeterminado Re: Comprobar si registro existe en ADO

Como es de suponer que tengas identificada la Entidad (en Text1) antes de tratar de añadir una nueva Sucursal (en Text2), pondrías ANTES DE HACER EL AddNew:
Código:
adoSuc.Recordset.MoveFirst
adoSuc.Recordset.Find "Entidad = '" & Text1.Text & "' And Sucursal = '" & Text2.Text & "'"
If Not adoSuc.EOF Then
   MsgBox ("Ya existía la Sucursal " & Text2)
Else
   '  Haces el proceso de incrementar la nueva sucursal.
End If
__________________
José María Movilla Cuadrado
______________________
Normas del foro
www.foro.vb-mundo.com
www.vb-mundo.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6 (permalink)  
Antiguo 03-06-2010, 14:31:01
Nuevo Amigo
 
Registrado: jun 2010
Posts: 6
Créditos: 665
cds_dani Aun no valorado
Predeterminado Re: Comprobar si registro existe en ADO

Cita:
Empezado por J.M.Movilla Ver Mensaje
Como es de suponer que tengas identificada la Entidad (en Text1) antes de tratar de añadir una nueva Sucursal (en Text2), pondrías ANTES DE HACER EL AddNew:
Código:
adoSuc.Recordset.MoveFirst
adoSuc.Recordset.Find "Entidad = '" & Text1.Text & "' And Sucursal = '" & Text2.Text & "'"
If Not adoSuc.EOF Then
   MsgBox ("Ya existía la Sucursal " & Text2)
Else
   '  Haces el proceso de incrementar la nueva sucursal.
End If
Hola.

Si pongo ese codigo antes del AddNew, en Text1 y Text2 habra un registro que si exista, no??

Seria hacer el find pero despues del AddNew, osea, despues de que el usuario teclee la entidad y la sucursal que quiera crear.

Creo que si hago eso que dices cojeria un registro (no se cual) pero que ya existe, porque los campos no estan vacios ya que no se ha hecho el AddNew.

Lo que necesito es despues de hacer el AddNew y que el usuario teclee tanto la entidad como la sucursal, comprobar que no exista. Pero ese es el problema....

Gracias por tu interes.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7 (permalink)  
Antiguo 03-06-2010, 14:37:27
Avatar de gilman
Moderador
 
Registrado: feb 2007
Ubicación: Bilbao
Posts: 1.758
Créditos: 28.227
gilman Valoración +2
Predeterminado Re: Comprobar si registro existe en ADO

Ese es el problema con controles como el ADODC, no se pueden 'meter' datos hasta que has creado el registro.
Si quieres continuar con el ADODC, y no hacer una consulta a la BD como yo te decía, haz que tús campos SUCURSAL y ENTIDAD sean indice único, y en el guardar de la aplicación controla el error que se producirá al insertar el registro.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #8 (permalink)  
Antiguo 03-06-2010, 14:49:35
Nuevo Amigo
 
Registrado: jun 2010
Posts: 6
Créditos: 665
cds_dani Aun no valorado
Predeterminado Re: Comprobar si registro existe en ADO

Cita:
Empezado por gilman Ver Mensaje
Ese es el problema con controles como el ADODC, no se pueden 'meter' datos hasta que has creado el registro.
Si quieres continuar con el ADODC, y no hacer una consulta a la BD como yo te decía, haz que tús campos SUCURSAL y ENTIDAD sean indice único, y en el guardar de la aplicación controla el error que se producirá al insertar el registro.
Y no puedo hacer una consulta select despues de hacer el addnew??? igualmente se me guardara el registro como si hiciera el find???

Si es asi, explicame por favor como hacerlo.

Gracias.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #9 (permalink)  
Antiguo 03-06-2010, 15:07:34
Avatar de gilman
Moderador
 
Registrado: feb 2007
Ubicación: Bilbao
Posts: 1.758
Créditos: 28.227
gilman Valoración +2
Predeterminado Re: Comprobar si registro existe en ADO

El código sería algo así
Código:
    Dim rdset As New ADODB.Recordset
    rdset.Open "SELECT SUCURSAL FROM SUCURSALES WHERE SUCURSAL = 'SUCURSALACTUAL' AND ENTIDAD = 'ENTIDADACTUAL'", _
            ADOconn, adOpenDynamic, adLockReadOnly
    If rdset.EOF Then
        'Todo OK podemos continuar
    Else
        'La sucursal ya existe
        'Informar al usuario
        'y no actualizar
    End If
    rdset.Close
    Set rdset = Nothing
Donde deberías hacer los cambios que comente en el anterior post.
ADOconn sería la conexion que usas para el ADODC
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #10 (permalink)  
Antiguo 03-06-2010, 15:13:00
Nuevo Amigo
 
Registrado: jun 2010
Posts: 6
Créditos: 665
cds_dani Aun no valorado
Predeterminado Re: Comprobar si registro existe en ADO

Gracias voy a probarlo y ahora te cuento.

Un saludo.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT. Ahora son las 17:45:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
© VB-MUNDO CO. Todos los derechos reservados
Tutoriales Premium | Juegos Online 


right

Programacion, vb 6, visual basic, foro programacion

Inactive Reminders By Icora Web Design