Consulta también:
- Ayuda con VB6
- Round vb6 - Guide
1 respuesta
Hola gjsm85:
--------------------------------------------------------
Mirá esto:
'rstenfermedades es el recordset actual, es decir las selección de datos de la base que has cargado para utilizar.
'Te vas al principio del recordset, es decir al primer registro.
rstenfermedades.MoveFirst
'Utilizas la rutina While para recorrer todos los registros hasta el final.
Do While Not rstenfermedades.EOF
'ultimocodigoingresado inicialmente es de un valor "0".
'Evalúas en cada registro si es mayor al valor del campo donde tienes el numérico (que no es autonumérico y no quieres que sea repetido)
If ultimocodigoingresado > Val(rstenfermedades!id) Then
'Si es mayor lo dejas como está (esta linea esta demas, pero es para un mayor entendimiento de tu parte.
ultimocodigoingresado = ultimocodigoingresado
'caso contrario, es decir si es menor, le asignas a la variable "ultimocodigoingresado " el valor de ese campo y de ese registro
Else
ultimocodigoingresado = Val(rstenfermedades!id)
End If
'asi avanzas hasta el final.
rstenfermedades.MoveNext
Loop
'al final de este recorrido tendrás el valor mas alto ingresado hasta el actual.
'y podras asesorar al operador, sobre cual es el último registro ingresado con el valor mas alto, lo que te permitiría continuar de alli en adelante.
-------------------------------------------------------
'Ahora si lo que quieres es saber si ese número está en la base de datos, mirá este código:
'bueno simple: vamos al principio del recordset
rstenfermedades.MoveFirst
'Con el InputBox pedidomos que ingrese el nuevo valor
codigoenfermedadnueva = Val(InputBox("Ingrese código nueva enfermedad a la base de Datos", "Historial clínico"))
'Evaluamos el valor de la varia "codigoenfermedadnueva ", si es igual a 0, le informamos que no ha ingresado ninguna información, o a presionado cancelar y lo sacamos al operador del proceso, es decir no le dejamos terminar la rutina por insuficiencia de información ---observe --Exit Sub--.
If codigoenfermedadnueva = 0 Then
MsgBox "No ha ingresado el código de enfermedad a registrar !, Ingréselo por favor.", vbCritical, "Historial Clínico"
Exit Sub
End If
'Si ingreso información con "Find" buscamos si está en la base de datos.
rstenfermedades.Find "Id= " & codigoenfermedadnueva, , , 1
'Si encuentra información igual a la ingresada por el operador, se lo informamos, le asesoramos cual es el último registro ingresado como el mas alto, para que tenga una noción de donde esta parado, y lo sacamos del procedimiento, impidiendole que termine y que le mande un error por que faltan datos.
If rstenfermedades.AbsolutePosition > 0 Then
MsgBox "El código de enfermedad a registrar, existe!, cambie por otro.", vbCritical, "Historial Clínico"
rstenfermedades.MoveLast
MsgBox "El código del último registro ingresado, corresponde al número: " & ultimocodigoingresado, vbInformation, "Historial Clínico"
Exit Sub
End If
'caso contrario si el numero no se encuentra, proseguimos con la inserción del nuevo registro en la base de datos.
enfermedadnueva = InputBox("Ingrese nueva enfermedad a la base de Datos", "Historial clínico")
If codigoenfermedadnueva = 0 Then
codigoenfermedadnueva = List2.ListCount + 1
End If
Bueno un abrazo y cualquier cosa no dudes en consultar.
Luis
www.bragadomas.com.ar
www.bragadomas.com
info@bragadomas.com
luis_pedro_mendez@yahoo.com.ar
http://www.foroswebgratis.com/foro-foro_de_programacion_en_general-152776.htm
http://www1.bragadomas.com/?tm=1&kw=music&KW1=Searchable%20MP3%20Database%20Software&KW2=Music%20Streaming%20Dedicated%20Server&KW3=Ringtone%20Database%20Management%20Software&searchbox=0&domainname=0&backfill=0
--------------------------------------------------------
Mirá esto:
'rstenfermedades es el recordset actual, es decir las selección de datos de la base que has cargado para utilizar.
'Te vas al principio del recordset, es decir al primer registro.
rstenfermedades.MoveFirst
'Utilizas la rutina While para recorrer todos los registros hasta el final.
Do While Not rstenfermedades.EOF
'ultimocodigoingresado inicialmente es de un valor "0".
'Evalúas en cada registro si es mayor al valor del campo donde tienes el numérico (que no es autonumérico y no quieres que sea repetido)
If ultimocodigoingresado > Val(rstenfermedades!id) Then
'Si es mayor lo dejas como está (esta linea esta demas, pero es para un mayor entendimiento de tu parte.
ultimocodigoingresado = ultimocodigoingresado
'caso contrario, es decir si es menor, le asignas a la variable "ultimocodigoingresado " el valor de ese campo y de ese registro
Else
ultimocodigoingresado = Val(rstenfermedades!id)
End If
'asi avanzas hasta el final.
rstenfermedades.MoveNext
Loop
'al final de este recorrido tendrás el valor mas alto ingresado hasta el actual.
'y podras asesorar al operador, sobre cual es el último registro ingresado con el valor mas alto, lo que te permitiría continuar de alli en adelante.
-------------------------------------------------------
'Ahora si lo que quieres es saber si ese número está en la base de datos, mirá este código:
'bueno simple: vamos al principio del recordset
rstenfermedades.MoveFirst
'Con el InputBox pedidomos que ingrese el nuevo valor
codigoenfermedadnueva = Val(InputBox("Ingrese código nueva enfermedad a la base de Datos", "Historial clínico"))
'Evaluamos el valor de la varia "codigoenfermedadnueva ", si es igual a 0, le informamos que no ha ingresado ninguna información, o a presionado cancelar y lo sacamos al operador del proceso, es decir no le dejamos terminar la rutina por insuficiencia de información ---observe --Exit Sub--.
If codigoenfermedadnueva = 0 Then
MsgBox "No ha ingresado el código de enfermedad a registrar !, Ingréselo por favor.", vbCritical, "Historial Clínico"
Exit Sub
End If
'Si ingreso información con "Find" buscamos si está en la base de datos.
rstenfermedades.Find "Id= " & codigoenfermedadnueva, , , 1
'Si encuentra información igual a la ingresada por el operador, se lo informamos, le asesoramos cual es el último registro ingresado como el mas alto, para que tenga una noción de donde esta parado, y lo sacamos del procedimiento, impidiendole que termine y que le mande un error por que faltan datos.
If rstenfermedades.AbsolutePosition > 0 Then
MsgBox "El código de enfermedad a registrar, existe!, cambie por otro.", vbCritical, "Historial Clínico"
rstenfermedades.MoveLast
MsgBox "El código del último registro ingresado, corresponde al número: " & ultimocodigoingresado, vbInformation, "Historial Clínico"
Exit Sub
End If
'caso contrario si el numero no se encuentra, proseguimos con la inserción del nuevo registro en la base de datos.
enfermedadnueva = InputBox("Ingrese nueva enfermedad a la base de Datos", "Historial clínico")
If codigoenfermedadnueva = 0 Then
codigoenfermedadnueva = List2.ListCount + 1
End If
Bueno un abrazo y cualquier cosa no dudes en consultar.
Luis
www.bragadomas.com.ar
www.bragadomas.com
info@bragadomas.com
luis_pedro_mendez@yahoo.com.ar
http://www.foroswebgratis.com/foro-foro_de_programacion_en_general-152776.htm
http://www1.bragadomas.com/?tm=1&kw=music&KW1=Searchable%20MP3%20Database%20Software&KW2=Music%20Streaming%20Dedicated%20Server&KW3=Ringtone%20Database%20Management%20Software&searchbox=0&domainname=0&backfill=0
10 ago 2009 a las 17:34
11 ago 2009 a las 00:37
If ultimocodigoingresado > Val(rstenfermedades!id) Then
La parte de "Val(rstenfermedades!id)" entiendo:
VAL(VALUE)
rst(Recordset)
enfermedades(es el nombre de la tabla o el campo? aqui es una duda)
!id(esta parte no la entiendo me esta buscando en mi campo "ID"? seria otra duda)
Bien estamos casi cerca, necesito es que antes de guardar los datos introducidos en el programa revise el campo en la base de datos(access) que te mencione antes en la base de datos recibe el nombre de "NOPER1" y en caso de que se repite este me notifique y me de el ID(numero de registro de la base de datos). Eso seria todo disculpa sime sobrepase explicando pero entre mas claro mejor gracias por tu tiempo de antemano. Saludos!
11 ago 2009 a las 01:30
Primero, saludos desde la Argentina.
Ahora...cuando vos pones en tu mensaje: "rst(Recordset)" esta bien, pero... el recordset es "rstenfermedades", le puse un nombre largo así, para cuando tenes en una base de datos, varias tablas dentro, poder dejar entonces cargados todos los recordset creados, y tenes una debida referencia por su nombre.
En este caso el recordset "rstenfermedades" se refiere explicitamente a la tabla enfermedades.
Lo explico un poco mejor, "rstenfermedades" no es el nombre de la tabla enfermedades que existe en la base de datos, sino es el nombre del recordset donde se cargarán los resultados de la consulta a la tabla enfermedades.
En cuanto al campo "!id" efectivamente te buscará en dicho campo, que en este caso no es "autonumérico", es solamente numérico, puede ser alfanumérico, etc...
Pero si fuera méramente numérico como en este caso, podrías entonces usar del algoritmo primero que figura en el post anterior, para sacar el número mas alto ingresado hasta el momento de este nuevo registro que se intenta crear.
Cabe aclarar que si el campo "id" es autonumérico toda esta problemática no tiene sentido, dado que en el nuevo registro creado, dicho campo tomará un valor nuevo y único que será el mayor hasta esa instancia.
En cuanto al nombre de la base de datos "NOPER1", se utiliza para abrir la misma.
Para buscar en la tabla es necesario que pongas en el select el nombre de la misma.
Gracias por tu explicación, y es cierto lo que dices, que entre mas claro mejor, y es un verdadero placer poder estar.
Saludos!
Te dejo unas direcciones por si necesitas algo, o quieres enviarme el código para que lo miré mas in situ y te lo devuelvo con algunas ideas. Un abrazo.
Luis
----------------------------
Webs
----------------------------
www.bragadomas.com.ar
www.bragadomas.com
https://bragadohoy.blogspot.com/
----------------------------
Mail
----------------------------
info@bragadomas.com
----------------------------
Foros:
----------------------------
http://www.foroswebgratis.com/foro-foro_de_programacion_en_general-152776.htm
http://www1.bragadomas.com/?tm=1&kw=music&KW1=Searchable%20MP3%20Database%20Software&KW2=Music%20Streaming%20Dedicated%20Server&KW3=Ringtone%20Database%20Management%20Software&searchbox=0&domainname=0&backfill=0
----------------------------