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

Problema al convertir de numeros a texto

Estas en el tema de Problema al convertir de numeros a texto en el foro de Visual Basic clásico en Foros del Web. tengo esta funcion Private Function AutoCodigo(record As Recordset) As String If record.BOF = True And record.EOF = True Then If record = rsAddR Then record!ID_Recibo ...
  #1 (permalink)  
Antiguo 02/05/2008, 12:57
 
Fecha de Ingreso: noviembre-2006
Mensajes: 45
Antigüedad: 17 años, 5 meses
Puntos: 0
Problema al convertir de numeros a texto

tengo esta funcion

Private Function AutoCodigo(record As Recordset) As String

If record.BOF = True And record.EOF = True Then
If record = rsAddR Then
record!ID_Recibo = "1"
Else: recor!Cod_Venta = "1"
Else
record.MoveLast
If record = rsAddR Then
AutoCodigo = Str(Val(record!ID_Recibo) + 1)
Else: AutoCodigo = Str(Val(record!Cod_Venta) + 1)
End If
'Movemos al principio
record.MoveFirst
End If
End Function

tanto el record!ID_Recibo como el otro en la base de datos los tengo como texto. y al ejecutar en la llamada me dice que no coinciden los tipos la llamada es la siguiente

rsAddR!ID_Recibo = AutoCodigo(rsAddR)

Si m podeis decir que pasa os lo agradeceria.
  #2 (permalink)  
Antiguo 02/05/2008, 13:43
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Problema al convertir de numeros a texto

No indicas si estás trabajando con DAO o con ADO, pero prueba poniendo la función así:

Si es con ADO:
Private Function AutoCodigo(record As ADO.Recordset) As String

Si es con DAO:
Private Function AutoCodigo(record As DAO.Recordset) As String


Un saludo
  #3 (permalink)  
Antiguo 02/05/2008, 15:11
 
Fecha de Ingreso: noviembre-2006
Mensajes: 45
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema al convertir de numeros a texto

es con DAO pero he puesto lo que me has dicho y me sigue apareciendo lo de no coinciden los tipos
  #4 (permalink)  
Antiguo 02/05/2008, 15:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Re: Problema al convertir de numeros a texto

Cita:
Iniciado por barbaglio Ver Mensaje
es con DAO pero he puesto lo que me has dicho y me sigue apareciendo lo de no coinciden los tipos
Ejecuta paso a paso y nos dices exactamente en qué linea da el error.

Analizando un poco el código noté esto:
Código:
record!ID_Recibo = "1"
Else: recor!Cod_Venta = "1"
¿Por qué utilizas String en vez de número?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 02/05/2008 a las 15:20 Razón: Análisis del código
  #5 (permalink)  
Antiguo 02/05/2008, 15:44
 
Fecha de Ingreso: mayo-2008
Mensajes: 4
Antigüedad: 16 años
Puntos: 0
Re: Problema al convertir de numeros a texto

barbaglio me parece que el problema es que tienes los campos definidos como texto en la base de datos y si lo cargas Str(Val(record!ID_Recibo) + 1) la funcion val estaria demás ya que esta devuelve un numero y no un string. La funcion str() si esta bien.
  #6 (permalink)  
Antiguo 02/05/2008, 16:53
 
Fecha de Ingreso: noviembre-2006
Mensajes: 45
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema al convertir de numeros a texto

Si en la base de datos los campos los he definido como texto ( que no se porque pero bueno )
y ahora no lo puedo cambiar xq tendria que cambiar apartde de la base de datos toda la documentación y paso y el error es de compilacion.

Private Function AutoCodigo(record As DAO.Recordset) As String <- Esta linea se me pone amarilla

If record = rsAddR Then <- y en esta linea el record esta como si estuviera seleccionado vamos con el fondo en azul

(estas dos lineas son del codigo que he puesto mas arriba)
  #7 (permalink)  
Antiguo 03/05/2008, 02:09
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Problema al convertir de numeros a texto

Bueno, el error es porque estás intentando comparar dos recordsets y eso no lo permite VB, puedes comparar variables, pero no objetos.

Por lo que veo, esa función lo que pretende es verificar si el recordset tiene registros, y si es así, sumarle una unidad y quieres utilizar la función con diferentes recordsets.

Si es así, creo que reducirías bastante el código si le pasas un segundo parámetro con el nombre del campo:

Código:
Private Function AutoCodigo(record As DAO.Recordset, sCampo As String) As String
If record.BOF = True And record.EOF = True Then
   '  record!sCampo = "1"
    AutoCodigo = "1"
Else
    record.MoveLast
    AutoCodigo = Str(Val(record(sCampo) + 1))  ' <- La conversión SI es correcta
End If
End Function
Y para llamarla:

Código:
Dim sNumero As String
sNumero = AutoCodigo(rsAddR, "ID_Recibo")
sNumero = AutoCodigo(rsOtro, "Cod_Venta")
Y después haces con la variable "sNumero", lo que quieras.

Un saludo

Última edición por Avellaneda; 03/05/2008 a las 02:15
  #8 (permalink)  
Antiguo 03/05/2008, 06:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 45
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema al convertir de numeros a texto

Bueno hemos adelantado algo xo me surge ahora otro error .

rsAddV.AddNew
rsAddV!Cod_Venta = AutoCodigo(rsAddV, "Cod_Venta")
rsAddV!ID_Cliente = frmRechSol.txtSolicitud(0).Text
rsAddV!Imp_Venta = total
rsAddV!Fec_Venta = Date
rsAddV!ID = rsAddV!Cod_Venta

ahora cuando llega a la linea de la llamada bien lo hace bien pero al devolver el valor me da error en la linea de la llamada a la funcion autocodigo diciendome que update o cancelupdate sin addnew o edit. y no entiendo el porque de este error.
  #9 (permalink)  
Antiguo 03/05/2008, 08:00
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Problema al convertir de numeros a texto

Creo que no entendiste el código que puse anteriormente:

Código:
Dim sNumero As String
sNumero = AutoCodigo(rsAddV, "Cod_Venta")
rsAddV.AddNew
rsAddV!Cod_Venta = sNumero
.....
.....
rsAddV.Update
es decir, primero asignas a la variable "sNumero" el valor y después lo añades al recordset.
  #10 (permalink)  
Antiguo 03/05/2008, 08:11
 
Fecha de Ingreso: noviembre-2006
Mensajes: 45
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema al convertir de numeros a texto

Si tenias razon ahora va perfect muxas gracias por la ayudita
GRACIAS
  #11 (permalink)  
Antiguo 03/05/2008, 09:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 45
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema al convertir de numeros a texto

Nada pense que si m habia funcionado pero nada

Dim codigo2 As String
For i = 0 To contador - 1

rsAddV.AddNew
rsAddV!ID = codigo
rsAddV!ID_Cliente = frmRechSol.txtSolicitud(0).Text
rsAddV!Imp_Venta = total / Val(Me.txtPlazos.Text)
rsAddV!Fec_Venta = Date
rsAddV!Cod_Mueble = aMuebles(i)
codigo2 = AutoCodigo(rsAddV, "Cod_Venta")
rsAddV!Cod_Venta = codigo2

rsAddV.Update
Next

la primera iteracion si que m lo hace pero en la segunda me da error update o cancelupdat sin addnew o edit.
  #12 (permalink)  
Antiguo 03/05/2008, 09:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 45
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Problema al convertir de numeros a texto

Ya lo solucioné puse la llamada a la función que está dentro del for encima del rsAddV.new
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 17:51.