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

Nuevo Registro en blanco solo con ID VB6

Estas en el tema de Nuevo Registro en blanco solo con ID VB6 en el foro de Visual Basic clásico en Foros del Web. Hola a todos, antes que nada felices fiestas para todos. Y espero me puedan ayudar con la siguiente duda: Tengo un boton en un form ...
  #1 (permalink)  
Antiguo 27/12/2011, 19:30
Avatar de gasuton  
Fecha de Ingreso: octubre-2010
Ubicación: Abandonware
Mensajes: 132
Antigüedad: 13 años, 6 meses
Puntos: 2
Nuevo Registro en blanco solo con ID VB6

Hola a todos, antes que nada felices fiestas para todos. Y espero me puedan ayudar con la siguiente duda:

Tengo un boton en un form al cual cuando lo preciono tiene que generar un registro en una tabla de acces, la idea es que solo me genere el ID ya que los demas datos de la tabla los completa con otro boton.

la coneccion a access la ago median un adodc1, el cual ya lo tengo configurado

yo estaba poniendo el registro

Código:
adodc1.Recordset.AddNew
pero me da un runtime error 91: object variable or with block variable not set

por lo visto algo me falta ya cheque con varias cosas pero nomas no doy con lo que es.


Saludos

Última edición por gasuton; 28/12/2011 a las 12:46
  #2 (permalink)  
Antiguo 28/12/2011, 14:39
Avatar de gasuton  
Fecha de Ingreso: octubre-2010
Ubicación: Abandonware
Mensajes: 132
Antigüedad: 13 años, 6 meses
Puntos: 2
Exclamación Respuesta: Nuevo Registro en blanco solo con ID VB6

Bueno he estado haciendo algunas pruebas mas y creo que estoy mejor encaminado por otro lado, pero estoy teniendo un error, primero les dejo el codigo para que le hechen un ojo y me digan que puede ser:

Código:
    Dim TickNum As String
    Dim tNum As String

    TickNum = "select max(Id_head_venta) as MaxNum from head_venta"
    If TickNum = "" Then
    tNum = 1
    Else
    tNum = TickNum + 1
    End If
    Text6.Text = tNum
Tengo que llevar el control de un tiket y que a medida que le pican al boton se incremente el numero esto lo jalo desde una DB access como lo comente antes.

El problema es que me esta dando run-time error 13: type mismatch sobre la linea de codigo

tNum = TickNum + 1

si la comen to ya no tengo el error pero tampoco veo nada en text6.text

Todo esto tomando en cuenta que la tabla esta vacia y todabia no hay registros
  #3 (permalink)  
Antiguo 28/12/2011, 15:17
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Nuevo Registro en blanco solo con ID VB6

Hola, sobre Bases de Datos poco puedo decirte pero desde luego aqui hay otros errores que debes corregir.

En primer lugar estás utilizando String (Cadenas) para operaciones que después vas a utilizar en cálculo, pienso que los tipos no son adecuados.

Dim TickNum As String
Dim tNum As String

En segundo lugar, estas asignando a TickNum una cadena

TickNum = "select max(Id_head_venta) as MaxNum from head_venta"

Esto es lo mismo que si pusieras TickNum = "Nada de nada"

Ahora comparas TickNum si es Nulo, cuando le has asignado previamente el valor a la cadena, al no ser nulo le sumas 1 a tu cadena y provocas el error.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #4 (permalink)  
Antiguo 28/12/2011, 15:38
Avatar de gasuton  
Fecha de Ingreso: octubre-2010
Ubicación: Abandonware
Mensajes: 132
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Nuevo Registro en blanco solo con ID VB6

Cita:
Iniciado por erbuson Ver Mensaje
Hola, sobre Bases de Datos poco puedo decirte pero desde luego aqui hay otros errores que debes corregir.

En primer lugar estás utilizando String (Cadenas) para operaciones que después vas a utilizar en cálculo, pienso que los tipos no son adecuados.

Dim TickNum As String
Dim tNum As String

En segundo lugar, estas asignando a TickNum una cadena

TickNum = "select max(Id_head_venta) as MaxNum from head_venta"

Esto es lo mismo que si pusieras TickNum = "Nada de nada"

Ahora comparas TickNum si es Nulo, cuando le has asignado previamente el valor a la cadena, al no ser nulo le sumas 1 a tu cadena y provocas el error.

Saludos
Ok mas o menos comprendo lo que me dices, pero lo que no me queda claro es como puedo hacer para que me funciona
  #5 (permalink)  
Antiguo 29/12/2011, 12:10
Avatar de gasuton  
Fecha de Ingreso: octubre-2010
Ubicación: Abandonware
Mensajes: 132
Antigüedad: 13 años, 6 meses
Puntos: 2
Exclamación Respuesta: Nuevo Registro en blanco solo con ID VB6

Ok he estado checando y prolije un poco mas el codifo el tema ahora esta mas dificil porque no me da error pero siempre me muestra el valo 1 en el text6.text.

Les dejo el codigo para que lo chequen:

Código:
Private Sub nvacta_Click()

    Dim cont As Integer
    Dim mensaje As String
    Dim TickNum As String
    Dim tNum As Integer

TickNum = "select max(Id_head_venta) as MaxNum from head_venta"
    If TickNum = "" Then
    tNum = 1
    Else
    tNum = Str(Val(TickNum) + 1)
    End If

Text6.Text = tNum
ya tambie probe crear un adodc con el query dentro, pero me paso exactamente lo mismo no me da mensaje de error pero siempre me da el numero 1, cuando ya agrege un registo con el numero 3, por lo que me deberia dar el numero 4 en el text6.text

P.D.: el query esta correcto porque cuando lo ejecuto desde el MS access me da el valor correcto.
  #6 (permalink)  
Antiguo 29/12/2011, 16:58
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Nuevo Registro en blanco solo con ID VB6

Hola, tal como te comente no tengo ni idea de Bases de Datos y no puedo ayudarte en este tema, pero por lo que veo tu tambien andas un poco perdido en este asunto:

TickNum = "select max(Id_head_venta) as MaxNum from head_venta"

Esta instruccion que has puesto NUNCA te va a devolver un valor de la Base de Datos y SIEMPRE va TickNum va a tener el mismo contenido, o sea

"select max(Id_head_venta) as MaxNum from head_venta"

suponiendo que la instruccion select sea para interactuar con la Base de Datos, ya te digo que ni idea, es IMPOSIBLE que pueda asignarse de esta manera, porque lo que estás haciendo es asignar un valor fijo a una variable de Cadena.

Supongo que algun experto te podrá ayudar.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #7 (permalink)  
Antiguo 30/12/2011, 10:23
Avatar de gasuton  
Fecha de Ingreso: octubre-2010
Ubicación: Abandonware
Mensajes: 132
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Nuevo Registro en blanco solo con ID VB6

Bueno despues de leer y buscar un buen rato por intenet me queda claro que una conexion directa por ADO es mucho mas versatil que el viejo adodc que estoy usando, el tema es que como soy nuevo en vb6, se me hizo mucho mas facil usar el adodc, pero ya estoy topandome con sus limitantes.

Despues de esto me puse a buscar en internet como realizar una conexcion directa a una db de access y termine mas perdido que turco en la neblina.

Espero me puedan orientar un poco en como realizar diche conexcion, por lo que entendi lo que tengo hacer es agregar un modulo X a mi proyecto y desde ahi configurar la conexcion a mi db con un nombre X, para poder llamarla desde cualquier parte de mi proyecto. ahora como hago esto, si me pueden ayudar o pasarme una liga para ver y orientarme se los agradecere muchisimo.

Saludos.

Última edición por gasuton; 30/12/2011 a las 15:05
  #8 (permalink)  
Antiguo 30/12/2011, 15:07
Avatar de gasuton  
Fecha de Ingreso: octubre-2010
Ubicación: Abandonware
Mensajes: 132
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Nuevo Registro en blanco solo con ID VB6

Señores se pueden dar por cerrado este tema, ya pude solucionarlo utilizando conexcion directa por ADO.

Saludos y Gracias a todos.

Etiquetas: access, blanco, registro, tabla, vb6
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 23:26.