Código rebelde

30/06/2003 - 15:39 por El Nazgûl | Informe spam
Tengo una tabla a la que accedo por ADO (es correcto, ggg, por aquello de
las confusiones). Busco cuál es el último código introducido y le sumo 1. He
aquí el código:

Sub AsignarCodigo()
CON = "Select CODIGO From TABLA"
TABLA.Open CON, CNN, adOpenDynamic, adLockOptimistic, adCmdText
'On Error Resume Next
TABLA.MoveLast
If TABLA.RecordCount <= 0 Then
formulario.txtCodigo = "01"
Else
formulario.txtCodigo = "0" & Val(TABLA!Codigo) + 1
End If
TABLA.Close
End Sub

Yo creo que el código está bien, pero no sé si estaré equivocándome al hacer
referencia a la propiedad .RecordCount (cuyo valor es -1, haya registros o
no en la tabla). Y puedo asegurar que tengo, al menos, un registro.

Y el segundo síntoma de rebeldía es que si escribo TABLA!CODIGO,
automáticamente me lo cambia a TABLA!Codigo.

¿Quién me puede ayudar?

Salu2 desde Angband (Utumno)

El Nazgûl ;-)

Preguntas similare

Leer las respuestas

#1 Nohel Hernández
30/06/2003 - 16:04 | Informe spam
Saludos Nazgul

Puedes intentarlo de la siguiente forma:

Sub AsignarCodigo()
CON = "Select MAX(CODIGO) as UltimoCodigo From TABLA"
TABLA.Open CON, CNN, adOpenDynamic, adLockOptimistic, adCmdText
'On Error Resume Next
If TABLA.EOF=True then
formulario.txtCodigo = "01"
Else
If IsNull(Tabla!UltimoCodigo) Then
formulario.txtCodigo = "01"
Else
formulario.txtCodigo = "0" & TABLA!UltimoCodigo + 1
End If
End If
TABLA.Close

Yo utilizaba "SELECT TOP 1 Codigo FROM TABLA ORDER BY Codigo DESC"
pero en una muy buena aclaratoria de Don Leonardo Azpurua me sugirío que
utilizara MAX ya que es soportado por la mayoria de las BD existentes

Con respecto a que te cambia CODIGO por Codigo no es una rebeldía, debes
verificar que no tengas declarada una variable "Codigo" en tu programa
Espero te sirva

Saludos

Nohel Hernandez
Caracas - Venezuela

(Guía de buen uso del foro)
http://perso.wanadoo.es/rubenvigon/foro
Respuesta Responder a este mensaje
#2 Víctor B.
30/06/2003 - 16:06 | Informe spam
El que la propiedad RecordCount te devuelva -1 tengas o no registros, es
debido al tipo de cursor que usas, seguramente del lado del Cliente. Prueba
con adOpenKeySet.
Por otra parte, el que el editor de VB te cambie el nombre del campo
TABLA!CODIGO, por TABLA!Codigo es por que en alguna parte de tu código lo
has escrito como la segunda forma.

"El Nazgûl" escribió en el mensaje
news:
Tengo una tabla a la que accedo por ADO (es correcto, ggg, por aquello de
las confusiones). Busco cuál es el último código introducido y le sumo 1.


He
aquí el código:

Sub AsignarCodigo()
CON = "Select CODIGO From TABLA"
TABLA.Open CON, CNN, adOpenDynamic, adLockOptimistic, adCmdText
'On Error Resume Next
TABLA.MoveLast
If TABLA.RecordCount <= 0 Then
formulario.txtCodigo = "01"
Else
formulario.txtCodigo = "0" & Val(TABLA!Codigo) + 1
End If
TABLA.Close
End Sub

Yo creo que el código está bien, pero no sé si estaré equivocándome al


hacer
referencia a la propiedad .RecordCount (cuyo valor es -1, haya registros o
no en la tabla). Y puedo asegurar que tengo, al menos, un registro.

Y el segundo síntoma de rebeldía es que si escribo TABLA!CODIGO,
automáticamente me lo cambia a TABLA!Codigo.

¿Quién me puede ayudar?

Salu2 desde Angband (Utumno)

El Nazgûl ;-)


Respuesta Responder a este mensaje
#3 El Nazgûl
30/06/2003 - 16:40 | Informe spam
Gracias a Nohel y Víctor. Me ha funcionado con el código de Nohel. No es por
despreciar a nadie, pero no sabía dónde colocar el adOpenKey (además de
cuando se abre el Recordset)

Salu2 desde Angband (Utumno)

El Nazgûl ;-)
"El Nazgûl" escribió en el mensaje
news:
Tengo una tabla a la que accedo por ADO (es correcto, ggg, por aquello de
las confusiones). Busco cuál es el último código introducido y le sumo 1.


He
aquí el código:

Sub AsignarCodigo()
CON = "Select CODIGO From TABLA"
TABLA.Open CON, CNN, adOpenDynamic, adLockOptimistic, adCmdText
'On Error Resume Next
TABLA.MoveLast
If TABLA.RecordCount <= 0 Then
formulario.txtCodigo = "01"
Else
formulario.txtCodigo = "0" & Val(TABLA!Codigo) + 1
End If
TABLA.Close
End Sub

Yo creo que el código está bien, pero no sé si estaré equivocándome al


hacer
referencia a la propiedad .RecordCount (cuyo valor es -1, haya registros o
no en la tabla). Y puedo asegurar que tengo, al menos, un registro.

Y el segundo síntoma de rebeldía es que si escribo TABLA!CODIGO,
automáticamente me lo cambia a TABLA!Codigo.

¿Quién me puede ayudar?

Salu2 desde Angband (Utumno)

El Nazgûl ;-)


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida