Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Campo Automatico Tipo 001 en un Text

Estas en el tema de Campo Automatico Tipo 001 en un Text en el foro de Visual Basic clásico en Foros del Web. Hola disculpen soy nuevo y tambn estoy haciendo un preyecto y quisiera saber como darle a un text la opcion de que al seleccionar el ...
  #1 (permalink)  
Antiguo 20/08/2011, 17:32
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Pregunta Campo Automatico Tipo 001 en un Text

Hola disculpen soy nuevo y tambn estoy haciendo un preyecto y quisiera saber como darle a un text la opcion de que al seleccionar el cmdnuevo se cree automaticamente 001, he encontrado pero solo hace de 1, 2, 3 quisiera agregarles los 00.

Saludos y gracias

PD: ES UNA BASE DE DATOS ACCES Y USO VISUAL 6.0
  #2 (permalink)  
Antiguo 22/08/2011, 03:21
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Campo Automatico Tipo 001 en un Text

Hola

Si el campo de la BD es de tipo numérico, no te va a coger los 0 por delante, para poder poner los 00 tendría que ser de tipo texto.

Para ir sumando, 1º tendrías que realizar una select para ver cual es el último valor y poder sumarle 1 y pasar el resultado al text

--Saludos--
  #3 (permalink)  
Antiguo 22/08/2011, 10:06
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Campo Automatico Tipo 001 en un Text

Hola!
Ponle en la carga del textbox:

FORMAT(txtNumero.Text,"000")
  #4 (permalink)  
Antiguo 22/08/2011, 20:52
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Campo Automatico Tipo 001 en un Text

No entiendo si pueden denme una explicacion paso a paso PORFA..!!

lokoman...
FORMAT(txtnumero.text,"000") me sale q finalize expresion y ponga =

Insomina...
el campo es texto y explicame como sumarle de una manera mejorcita porfa..


SALUDOS..
  #5 (permalink)  
Antiguo 23/08/2011, 01:56
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 5 meses
Puntos: 13
Respuesta: Campo Automatico Tipo 001 en un Text

Hola

En mi caso hago algo como:

Código:
reg.Open "Select Max(Cod) from Tabla1", bd, adOpenStatic, adLockOptimistic

        If IsNull(reg.Fields(0)) Then 'Es el primer pedido
            autonum = "0001"
        Else 'ya existe otro pedido
            autonum = reg.Fields(0) + 1 'Sumamos 1 al num anterior
            If Len(autonum) = 1 Then
                autonum = "000" & autonum
            ElseIf Len(autonum) = 2 Then
                autonum = "00" & autonum
            ElseIf Len(autonum) = 3 Then
                autonum = "0" & autonum
            End If
        End If
reg.close
En este caso el código es de 4 dígitos, pero puedes adaptarlo a tu sistema. En la primera parte, con la select, lo que hago es buscar el código mayor en la BD y sumarle uno. Luego dependiendo de la longitud que tenga ese número le añado los 00.

La verdad es que viendo el método de lokoman creo que en su día me complique demasiado. Una vez obtenido el número máximo y sumarle uno, solo le tienes que dar formato.

--Saludos--
  #6 (permalink)  
Antiguo 23/08/2011, 06:45
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Campo Automatico Tipo 001 en un Text

Chequea el mini proyecto:

http://myfreefilehosting.com/f/9afd0c6704_0.1MB

Este es el code en un boton:

Código vb:
Ver original
  1. Private Sub cmdFormato_Click()
  2.     txtNumero.Text = Format(txtNumero.Text, "000")
  3. End Sub
  #7 (permalink)  
Antiguo 23/08/2011, 07:59
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Campo Automatico Tipo 001 en un Text

Oka lo logre bro.... pero ahora como hago para q verifique el registro anterior y le sume uno... AYUDAME..!!!

Gracias de antemano
  #8 (permalink)  
Antiguo 23/08/2011, 09:32
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Campo Automatico Tipo 001 en un Text

Tomando del codigo de Insomnia:

'BUSCAR EL CODIGO MAXIMO
REG.Open "Select Max(Cod) as NUM_MAXIMO from TABLA", CONEXION, adOpenStatic, adLockOptimistic

Despues, simplemente:

txtNUMERO.TEXT= FORMAT ( REG!NUM_MAXIMO + 1, "000")
  #9 (permalink)  
Antiguo 23/08/2011, 10:12
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Campo Automatico Tipo 001 en un Text

el REG q es ..???

NU_MAXIMO q es..??

CONEXION q es..??

explicame porfa...

Saludos
  #10 (permalink)  
Antiguo 23/08/2011, 10:48
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Campo Automatico Tipo 001 en un Text

Debes tener una referencia a:
• Microsoft ActiveX Data Objects 2.0 Library

REG: es el nombre del recordset
NUM_MAXIMO: es el nombre del campo temporal (o alias) que va a tener el valor máximo del campo consultado con la instrucción SQL
CONEXIÓN: es la conexión a la base de datos
COD: es el nombre del campo de la base de datos que estamos consultando

Te dejo un ejemplo conectándome a la base de datos de Neptuno en Access:

Código vb:
Ver original
  1. Dim REG As ADODB.Recordset
  2.     Dim CONEXION As ADODB.Connection
  3.    
  4.     Set REG = New ADODB.Recordset
  5.     Set CONEXION = New ADODB.Connection
  6.    
  7. 'ESTABLECER LA CONEXION CON LA BASE DE DATOS
  8.    CONEXION.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
  9.             & "Data Source=C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Neptuno.mdb;" _
  10.             & "Persist Security Info=False"
  11.            
  12.     CONEXION.Open
  13.    
  14. 'BUSCAR EL CODIGO MAXIMO
  15.    REG.Open "Select Max(Cod) as NUM_MAXIMO from TABLA", CONEXION, adOpenStatic, adLockOptimistic
  16.    
  17.     If REG.EOF = False Then
  18.         'HAY DATOS
  19.        txtNUMERO.Text = Format(REG!NUM_MAXIMO + 1, "000")
  20.     Else
  21.         'NO HAY DATOS
  22.        txtNUMERO.Text = Empty
  23.     End If
  24.    
  25. 'CERRAMOS LA CONEXION Y LIBERAMOS LOS RECURSOS
  26.    REG.Close
  27.     CONEXION.Close
  28.    
  29.     Set REG = Nothing
  30.     Set CONEXION = Nothing

Espero haberte despejado las dudas

Última edición por lokoman; 23/08/2011 a las 10:53
  #11 (permalink)  
Antiguo 24/08/2011, 20:30
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Campo Automatico Tipo 001 en un Text

Bro no quiero de esa forma yo ya tengo enlazada la base por medio de

App&Path o algo asi jeje

solo quiero q verifique los datos de aquella base y le sume...

TU forma es buena pero no me funciona PORFA AYUDAME....

Y el 00 me sirvio de 10..!!
  #12 (permalink)  
Antiguo 25/08/2011, 09:01
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Campo Automatico Tipo 001 en un Text

Puedes postear tu codigo del enlace o que controles usas para darte sugerencias?

PD: Usas un control "Data"? Intenta esto:

Código vb:
Ver original
  1. Sub cmdBoton_Click()
  2.     Data.Recordset.MoveLast
  3.     txtNumero.Text = Format(Data.Recordset.Fields(0) + 1, "000")
  4. End Sub

En el cero del "Data.Recordset.Fields(0)" quiere decir que es el primer campo, para que funcione bien, los datos del campo que trae el control "Data" deben estar ordenados en ascendente.

O tambien:

Código vb:
Ver original
  1. 'BUSCAR EL CODIGO MAXIMO
  2.    Data.RecordSource="Select Max(Cod) as NUM_MAXIMO from TABLA"
  3.        
  4.     txtNUMERO.Text = Format(Data.Recordset.Fields(0) + 1, "000")

Última edición por lokoman; 25/08/2011 a las 09:14
  #13 (permalink)  
Antiguo 25/08/2011, 20:39
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Campo Automatico Tipo 001 en un Text

Pues bro ese codigo que me envias esta bueno pero me sale un error que no coinciden los tipos y otras cosas y doy click en Ejecutar y el que quiero guardar nose guarda y el anterior a este SE SALTA UN NUMERO ES DECIR SE HACE DE 004 A 005, pero claro que el 004 yo lo ingrese...

Código:
Data1.DatabaseName = App.Path & "\Datos_Personales_Estudiantes_PHVE.MDB"
COdigo pa enlazar la base en el Data...


Saludos...
  #14 (permalink)  
Antiguo 29/08/2011, 14:28
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Campo Automatico Tipo 001 en un Text

• La parte de "no coinciden tos tipos", es porque el dato de la base de datos es texto y le estamos sumando uno. Para resolver esto usa la funcion VAL():

txtNUMERO.Text = Format(VAL(Data.Recordset.Fields(0)) + 1, "000")

• La parte de "salta de 004 a 005" creo que es asi que debe funcionar... ahora, si no esta grabando y pone el "005" cuando debe ser "004" hay que ver tu rutina de guradado para ver que esta fallando.

Para guardar uso instrucciones SQL, :

CONEXION.EXECUTE "INSERT INTO TABLA (CAMPO1, CAMPO2, CAMPO3) VALUES ("001", "TEST 1",
"TEST 2")

Etiquetas: registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:51.