• Viernes 29 de Marzo de 2024, 02:09

Autor Tema:  Re: Una cosa muy extraña <:-S  (Leído 5102 veces)

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« en: Miércoles 27 de Agosto de 2003, 20:31 »
0
:hola: Bueno, mi pregunta es un poco extraña, a ver si le pueden encontrar solucion:

En mi formulario, cuando pulsas un command, para mostrar otro, no se pq al cerrar el forulario mostrado el recordset se mueve al primero, p. ej. si yo estoy en la factura nº 12 y pulso un boton para mostrar un formulario donde hay la lista de articulos, al cerrar ese form de articulos, el recordset se mueve al primero ( todos los recordsets ).

Mi pensamiento es q viene de la listbox ( hay toda la lista de facturas, y al seleccionar un objeto de esa lista, el recordset 1 y 2 se mueven al registro seleccionado ).

Espero haberme explicado con claridad.

Gracias:)
Jordi_BCN ···· Barcelona

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #1 en: Miércoles 27 de Agosto de 2003, 21:08 »
0
Ya irás dándote cuenta, Jordi, de que en realidad en programación hay muy pocas cosas extrañas... la inmensa mayoría de las veces esas cosas son totalmente lógicas...

En este tu caso, cuando abres el nuevo formulario modificarás el puntero del recordset que estás presentando, o cuando menos al volver al formulario padre se habrá perdido el puntero del grid que tienes en pantalla...

Si tú, antes de leer el segundo formulario defines una variable con el puntero del registro, por ejemplo

nReg = Adodc1.RecordSet.Bookmark

y cuando vuelvas del formulario secundario apuntes a ese registro mediante

Adodc1.RecorSet.Bookmark = nReg

es de esperar que te encuentres que el grid está apuntando a la misma factura que antes de cambiar de formulario.

Saludos y suerte

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Una cosa muy extraña <:-S
« Respuesta #2 en: Miércoles 27 de Agosto de 2003, 21:23 »
0
Como novedad: Esa no me la sabia, ya decia yo que deberia existir algo para solucionar ese inconveniente, algo decente, porque yo me ponia a hacer contadores en los modulos, y retornaba el recordset mediante ciclos en getfocus... que cosa más horrible.

Menos mal aca esta JM, que se las sabe casi todas, y las que no se sabe se las averigua...:P


Chau

Juank:good:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #3 en: Miércoles 27 de Agosto de 2003, 21:33 »
0
:o Movilla, eres todo un crack en vb!!!

Garcias:)
Jordi_BCN ···· Barcelona

HurryCrack

  • Miembro MUY activo
  • ***
  • Mensajes: 206
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #4 en: Miércoles 27 de Agosto de 2003, 23:31 »
0
Por ke no utilizas una variable global en un modulo para tu recorset, de forma ke no se mube a no ser ke tu lo muebas. Es otra forma mas. :hippi:
nota: te vamos a poner MoviCrack, jiji
un saludo

HurryCrack

  • Miembro MUY activo
  • ***
  • Mensajes: 206
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #5 en: Miércoles 27 de Agosto de 2003, 23:31 »
0
Por ke no utilizas una variable global en un modulo para tu recorset, de forma ke no se mueve a no ser ke tu lo muevas. Es otra forma mas. :hippi:
nota: te vamos a poner MoviCrack, jiji
un saludo

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #6 en: Miércoles 27 de Agosto de 2003, 23:34 »
0
Siento no ser capaz de deciros quién me enseñó esos trucos... Pero lo que sí puedo afirmaros es que no lo he inventado yo... O sea que os agradezco vuestros elogios, pero no soy yo quien debe recibirlos...

Gracias.

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #7 en: Jueves 28 de Agosto de 2003, 09:02 »
0
:'-( Pues como siempre, soy ntan malo q a pesar de q Movilla me lo explique no lo puedo usar:(

Mi codigo:
Al hacer click para habrir el form
Private sub Command1_Click()
dim nReg as ineteger
nReg = Adodc1.Recordset.BookMark
End Sub


Quizas me diran q soy muy malo... pero :'( no se cm hacerlo:no:

Espero q me ayuden
Jordi_BCN ···· Barcelona

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #8 en: Jueves 28 de Agosto de 2003, 10:50 »
0
Vamos a ver.  Detrás de tu línea:

nReg = Adodc1.Recordset.BookMark

pondrás la línea de presentar el segundo formulario:

frmForm2.Show vbModal

y finalmente, para que cuando hagas el UnLoad del segundo formulario, al volver al primer formulario recupere el puntero del recordset:

Adodc1.Recordset.BookMark=nReg

Espero que ahora sí te funcione.

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #9 en: Jueves 28 de Agosto de 2003, 11:01 »
0
nReg, es el número de registro que hay en el frmForm1 si? Osea, q podria ser el contenido de un textbox?

Gracias
Jordi_BCN ···· Barcelona

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #10 en: Jueves 28 de Agosto de 2003, 11:49 »
0
nReg está definido como Integer... es decir, es el número de registro del recordset... porque tú hablabas de que al recuperar el formulario SE TE IBA EL PUNTERO AL PRIMER REGISTRO... Por eso te doy la fórmula para que recupere el registro al que apuntaba antes de leer el segundo formulario...

Si lo que quieres es mantener el contenido del textbox tendrías que definir una variable de tipo texto, asignarla y luego recuperarla:

Dim cText As String
cText = Text1.Text
frmForm2.Show vbModal
Text1.Text = cText

Ahora sí recuperarías el contenido original del textbox...

Saludos

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #11 en: Jueves 28 de Agosto de 2003, 15:23 »
0
No entiendo, lo q me decias primero ya era correcto, yo solo quiero conservar el registro seleccionado, q no se me mueva al primero. Pero no se donde colocarlo ese codigo :-S

Ayudenme!!! :'-(:(
Jordi_BCN ···· Barcelona

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #12 en: Jueves 28 de Agosto de 2003, 20:55 »
0
En Command1_Click
text1.text = adodc1.recordset.bookmark
form2.show vbmodal


En form2_Unload
adodc1.recordset.bookmark = text1.text


Es esto lo q debo hacer?? Gracias :gracias:
Jordi_BCN ···· Barcelona

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #13 en: Jueves 28 de Agosto de 2003, 23:51 »
0
En tu consulta inicial decías: si yo estoy en la factura nº 12 y pulso un boton para mostrar un formulario donde hay la lista de articulos, al cerrar ese form de articulos, el recordset se mueve al primero

Está claro que hablas del registro, no de un textbox... Mis respuestas van todas dirigidas a recuperar el registro inicial, la factura a la que apuntaba antes de presentar el segundo formulario.  No sé qué quieres hacer con el textbox al que te refieres últimamente...

Saludos

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #14 en: Viernes 29 de Agosto de 2003, 07:41 »
0
El Text1, contiene el número de factura, entiendes? por eso lo utilizaba para lo del BookMark [Adodc1.Recordset.Bookmark = Text1.Text ( numero de factura ) ]

Espero q ahora si lo entiendas bien:)
Jordi_BCN ···· Barcelona

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #15 en: Viernes 29 de Agosto de 2003, 08:49 »
0
Aparte de la correcta solución que te ha proporcionado J.M.Movilla, pienso en mi atrevimiento, que deberías replantearte el método y lógica de tu código: que abras un formulario no debe provocar que se mueva el puntero del recordset (sin saber más me da la sensación que se está desencadenando un evento en un momento que tú no deseas). Además veo que en los últimos mensajes te preocupas por el valor que muestra un textbox, cosa que debería ser indiferente si al textbox le asignas su valor en el momento adecuado. A lo mejor es mucho decir por mi parte, pero te aconsejaría que repasaras el código que tienes en los distintos eventos.
De todas formas, repito que la solución que te brindan debería solventar tu incidencia perfectamente.

Sort.

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #16 en: Viernes 29 de Agosto de 2003, 16:57 »
0
es que no te das cuenta de que el Número de Factura no puede ser el Bookmarck de una tabla... el Bookmarck ha de ser obligatoriamente el NÚMERO DEL REGISTRO, el puntero, mejor dicho...

acalanto

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Re: Una cosa muy extraña <:-S
« Respuesta #17 en: Viernes 29 de Agosto de 2003, 17:15 »
0
Estoy de acuerdo con Brozz. Debes de tener un envento que 'refresca' el recordset y va al primer registro. Probablemente en la activación de formulario Form_Activate. con lo cual. a pesar de que el formulario nuevo lo habrás Modalmente, cuando lo cierras el formulario llamante (El que tiene la factura), recupera el foco y procesa el evento Activate. Si ahí tienes código que refresca el Recordset, este se irá al primer registro inevitablemente.

Movilla te da una solución correcta que es guardar el registro activo (Marca de Libro) que no es otra cosa que un apuntador del recordset (No es el número de factura, sino el bloque de la base de datos que contiene ese número de factura si no es que otro usuario la elimina con lo que te encontrarías una pequeña sorpresa).

Buen consejo de Brozz, revisa tu código que seguro que cuando cierras el segundo fromulario y el primero toma el enfoque, reinicias la consyulta a los datos perdiendo por tanto el registro en el que te encontrabas.

Un cordial saludo
-Acalanto-

Jordi_BCN

  • Miembro activo
  • **
  • Mensajes: 59
    • Ver Perfil
Una cosa muy extraña <:-S
« Respuesta #18 en: Viernes 29 de Agosto de 2003, 20:20 »
0
Bien, como decian, el problema estaba en form_activate allí tenia el codigo rs.movefirst

Gracias por toda vuestar ayuda! Salu2
Jordi_BCN ···· Barcelona