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

Para Gente Capaz

Estas en el tema de Para Gente Capaz en el foro de Visual Basic clásico en Foros del Web. Cita: Iniciado por Avellaneda Ese código ya lo pusiste al principio y se te aconsejó que utilizaras una clausula INNER JOIN en la consulta para ...

  #31 (permalink)  
Antiguo 01/11/2008, 09:56
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

Cita:
Iniciado por Avellaneda Ver Mensaje
Ese código ya lo pusiste al principio y se te aconsejó que utilizaras una clausula INNER JOIN en la consulta para enlazar las dos tablas.

Revisa la respuesta #17 y sustituye todas las veces que aparece 'tbdetallecliente' por tbdetallefactura

Ya lo hice pero me dan un error en el inner join, tambien cambie los 'tbdetallecliente' por tbdetallefactura


NO SE QUE MAS HACER !!!!!!!!!!!!!!!!!!!!!!!!!!!

el error es :"No coincide el tipo en la expresion JOIN" error 3615


PD: No hay otra manera de hacerlo ? Menos complicado
  #32 (permalink)  
Antiguo 02/11/2008, 17:26
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

Cita:
Iniciado por franko1809 Ver Mensaje
Tio en el post 16 probaste como te dije y te salia error "No se encontro el elemeno de esta coleccion" intenta de esta manera

Código:
Private Sub carga_datos11()

Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = "SELECT D.numfactura,D.cantidad,D.codigoprod,A.descripcion,D.precio,D.subtotal FROM tbarticulos A INNER JOIN tbdetallefactura D ON A.codigo = D.codigoprod WHERE D.numfactura=" + txtNroPresupuesto.Text + "" 


i = 1
For i = 1 To grilla.Rows - 1 

grilla.TextMatrix(i, 0) = dsDetalleFactura.Recordset!cantidad
grilla.TextMatrix(i, 1) = dsDetalleFactura.Recordset!codigoprod
grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset!descripcion
grilla.TextMatrix(i, 3) = dsDetalleFactura.Recordset!precio
grilla.TextMatrix(i, 4) = dsDetalleFactura.Recordset!subtotal

'i = i + 1
dsDetalleFactura.Recordset.MoveNext

If i = grilla.Rows Then Exit For

Next

End Sub
Cheka bien el codigo por q hay una linea comentada.
el error "No se encontro el elemeno de esta coleccion" que hacia referencia a grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset!descripcion puede ser debido al " ! " si sale ese error prueba asi
grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset("descripcion") ó
grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset("A.descripcion")

Por ultimo si sale error en la sentencia sql quita WHERE D.numfactura=" + txtNroPresupuesto.Text + " y carga todos los datos para ver si el error esta ahi?
Donde te mando el proyecto franko asi lo ves ?
  #33 (permalink)  
Antiguo 02/11/2008, 18:03
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 4 meses
Puntos: 10
Respuesta: Para Gente Capaz

Tio mandalo, ojo que intente hacer una conexion con data y no pude, no dejaba que se conecte, que version de access usas, yo tengo access2003 y creo que el data no la soporta o quizas yo haya hecho mal la conexion ya que nunca he usado data.

Probe la consulta con un adodc y un datagrid y me funciono bien igual mandame el proyecto haber si le encuentro el error

Última edición por franko1809; 03/11/2008 a las 11:31
  #34 (permalink)  
Antiguo 03/11/2008, 09:18
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

Cita:
Iniciado por franko1809 Ver Mensaje
Tio mandalo [email protected], ojo que intente hacer una conexion con data y no pude, no dejaba que se conecte, que version de access usas, yo tengo access2003 y creo que el data no la soporta o quizas yo haya hecho mal la conexion ya que nunca he usado data.

Probe la consulta con un adodc y un datagrid y me funciono bien igual mandame el proyecto haber si le encuentro el error

Hola franko, si el access es el 2003 te mande el proyecto a tu mail cualquier cosa me avisas


un abrazo
  #35 (permalink)  
Antiguo 03/11/2008, 11:40
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
Respuesta: Para Gente Capaz

Cita:
Iniciado por gasafonso Ver Mensaje
ambos son de tipo numerico

en los 2 guardo los codigo de los articulos
En el link #26 te preguntaba si los campos "Codigo" de la tabla tbArticulos y "CodigoProd" de la tabla tbDetalleFactura eran del mismo tipo.

Tu respuesta fué la indicada

Pues bien, ahora que me envías el proyecto, veo que el campo "Codigo" de la tabla tbArticulos es de tipo numérico (integer) y sin embargo el campo "CodigoProd" de la tabla tbDetalleFactura es de tipo Texto (tamaño = 50).

Podríamos haber estado con éste tema un año, por no comprobar lo que se te pregunta!!.

Sustituye el tipo de campo en la tabla 'tbDetalleFactura' y lo pones igual que Codigo de la otra tabla. A continuación pones la consulta que escribí en el #12 sutituyendo los nombres de las tablas como ya te indiqué.



Edición: Para la respuesta anterior que le diste a franko1809:

La versión de Access que estás utilizando es posible que sea la 2003, pero el formato del archivo Access es de la versión 95 (que creo que era lo que preguntaba).

Última edición por Avellaneda; 03/11/2008 a las 12:08 Razón: Para no aumentar el número de respuestas.
  #36 (permalink)  
Antiguo 03/11/2008, 12:31
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 4 meses
Puntos: 10
Respuesta: Para Gente Capaz

Tio como el tipo de dato de los campos es distinto, es imposible unir las tablas

Primero corrige eso y solo cambia la consulta del recordsource a esta
Código:

dsDetalleFactura.RecordSource = "SELECT D.cantidad,D.codigoprod,A.descripcion,D.precio,D.subtotal FROM tbarticulos A INNER JOIN tbdetallefactura D ON A.codigo = D.codigoprod WHERE D.numfactura='" & txtNroPresupuesto.Text & "'"
Asi debe funcionar

Otra cosa no entiendo esta linea, lo que hace es limitar el resultado
y solo mostrara 2 filas??
.Rows = dsDetalleFactura.Recordset.RecordCount + 2

Tambien la base de datos que enviaste es de solo lectura me dice que la convierta y al hacerlo y ejecutar el programa me dice que no reconoce el formato de la base de datos, en fin espero con eso ya soluciones

Cita:
Iniciado por Avellaneda Ver Mensaje
Edición: Para la respuesta anterior que le diste a franko1809:

La versión de Access que estás utilizando es posible que sea la 2003, pero el formato del archivo Access es de la versión 95 (que creo que era lo que preguntaba).
Entonces no se puede usar el control data con access2003 que es la version que uso, por que me dice que no reconoce el formato de la base dde datos

saludos

Última edición por franko1809; 03/11/2008 a las 12:38
  #37 (permalink)  
Antiguo 03/11/2008, 17:32
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
De acuerdo Respuesta: Para Gente Capaz

Cita:
Iniciado por Avellaneda Ver Mensaje
En el link #26 te preguntaba si los campos "Codigo" de la tabla tbArticulos y "CodigoProd" de la tabla tbDetalleFactura eran del mismo tipo.

Tu respuesta fué la indicada

Pues bien, ahora que me envías el proyecto, veo que el campo "Codigo" de la tabla tbArticulos es de tipo numérico (integer) y sin embargo el campo "CodigoProd" de la tabla tbDetalleFactura es de tipo Texto (tamaño = 50).

Podríamos haber estado con éste tema un año, por no comprobar lo que se te pregunta!!.

Sustituye el tipo de campo en la tabla 'tbDetalleFactura' y lo pones igual que Codigo de la otra tabla. A continuación pones la consulta que escribí en el #12 sutituyendo los nombres de las tablas como ya te indiqué.



Edición: Para la respuesta anterior que le diste a franko1809:

La versión de Access que estás utilizando es posible que sea la 2003, pero el formato del archivo Access es de la versión 95 (que creo que era lo que preguntaba).
Perdon PERDON, PERDON no te entendi pensaba que me decias si guardaba numeros , no te quise hacer perder tiempo PERDON de nuevo


y muchas gracias
  #38 (permalink)  
Antiguo 03/11/2008, 17:35
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

Cita:
Iniciado por franko1809 Ver Mensaje
Tio como el tipo de dato de los campos es distinto, es imposible unir las tablas

Primero corrige eso y solo cambia la consulta del recordsource a esta
Código:

dsDetalleFactura.RecordSource = "SELECT D.cantidad,D.codigoprod,A.descripcion,D.precio,D.subtotal FROM tbarticulos A INNER JOIN tbdetallefactura D ON A.codigo = D.codigoprod WHERE D.numfactura='" & txtNroPresupuesto.Text & "'"
Asi debe funcionar

Otra cosa no entiendo esta linea, lo que hace es limitar el resultado
y solo mostrara 2 filas??
.Rows = dsDetalleFactura.Recordset.RecordCount + 2

Tambien la base de datos que enviaste es de solo lectura me dice que la convierta y al hacerlo y ejecutar el programa me dice que no reconoce el formato de la base de datos, en fin espero con eso ya soluciones



Entonces no se puede usar el control data con access2003 que es la version que uso, por que me dice que no reconoce el formato de la base dde datos

saludos
Perdon lo que estoy aprendiendo y hay cosas que no las manejo del todo .
Bueno lo pruebo y te aviso

esta fila es para agregar 2 filas mas de los datos a mostrar

.Rows = dsDetalleFactura.Recordset.RecordCount + 2

Sino como se puede hacer para mostrar grilla llena ?

un abrazo


PD: Como puedo hacer para ponerle contraseña a la base de datos y al iniciar el programa que se habra ? o sea yo se como poner contraseña pero no se como ponerlo en el programa
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:08.