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. Hola, esta pregunta es bastante compleja: yo tengo un msflexigrid que tiene 1,2,3,4,5 columnas yo cuando se carga el foemulario cargo las columnas 1,2 ,4, ...

  #1 (permalink)  
Antiguo 23/10/2008, 19:21
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
De acuerdo Para Gente Capaz

Hola, esta pregunta es bastante compleja:

yo tengo un msflexigrid que tiene 1,2,3,4,5 columnas yo cuando se carga el foemulario cargo las columnas 1,2 ,4, 5 con datos de una tabla

La pregunta es yo quiero cargar la columnna 3 en funcion a el codigo de la columnna 2 de la tabla articulos


gracias
  #2 (permalink)  
Antiguo 24/10/2008, 02:32
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
Hola, esta pregunta es bastante compleja:

yo tengo un msflexigrid que tiene 1,2,3,4,5 columnas yo cuando se carga el foemulario cargo las columnas 1,2 ,4, 5 con datos de una tabla

La pregunta es yo quiero cargar la columnna 3 en funcion a el codigo de la columnna 2 de la tabla articulos


gracias
Bueno, el título de la pregunta está de más, deberías leer esto:

http://www.forosdelweb.com/f69/antes...a-esto-260690/

y por supuesto que la pregunta es compleja, pero creo que con un simple IF ... End If lo podrías solucionar.

y también me gustaría saber si las demás respuestas que te dieron a otros temas, solucionaron tu problema, pues nos quedamos con las ganas (al menos yo) de saberlo.

véase p.e.
http://www.forosdelweb.com/f69/como-...rchivo-634895/
y otras varias.


  #3 (permalink)  
Antiguo 24/10/2008, 17:24
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

Si fueron de graN AYUDA , sobre todo las tuyas exepto la de la imagen

no me anduvo, tal vez no me explique bien.

Quiero grabar una imagen que este en un picturebox o algo haci guardarla

en una base de datos y luego imprimirla en un datareport


PD: disculpa que no te alla contestado fue sin malas intenciones
  #4 (permalink)  
Antiguo 24/10/2008, 17:27
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
Bueno, el título de la pregunta está de más, deberías leer esto:

http://www.forosdelweb.com/f69/antes...a-esto-260690/

y por supuesto que la pregunta es compleja, pero creo que con un simple IF ... End If lo podrías solucionar.

y también me gustaría saber si las demás respuestas que te dieron a otros temas, solucionaron tu problema, pues nos quedamos con las ganas (al menos yo) de saberlo.

véase p.e.
http://www.forosdelweb.com/f69/como-...rchivo-634895/
y otras varias.


como con un if, si yo tengo que recorrer toda la grilla buscando el codigo y buscandolo en la tabla articulos para poner en la 3 la descripcion del articulo


  #5 (permalink)  
Antiguo 24/10/2008, 17:28
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz


como con un if, si yo tengo que recorrer toda la grilla buscando el codigo y buscandolo en la tabla articulos para poner en la 3 la descripcion del articulo
  #6 (permalink)  
Antiguo 24/10/2008, 18:36
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Para Gente Capaz

Parece que mecesitas un campo calculado, que codigo utilizas para cargar la grilla
  #7 (permalink)  
Antiguo 25/10/2008, 09:47
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
Parece que mecesitas un campo calculado, que codigo utilizas para cargar la grilla
Private Sub carga_datos()
Dim sql As String
Dim criterio As String
tbdetallefactura where numfactura= " + txtNroPresupuesto.Text & " "
criterio = "numfactura= '" & txtNroPresupuesto.Text & "'"
dsDetalleFactura.Recordset.FindFirst criterio

For i = 1 To grilla.Rows - 1
dsDetalleFactura.Recordset.MoveFirst

dsDetalleFactura.Recordset.FindFirst criterio
grilla.TextMatrix(i, 0) = dsDetalleFactura.Recordset!cantidad
grilla.TextMatrix(i, 1) = dsDetalleFactura.Recordset!codigoprod
grilla.TextMatrix(i, 3) = dsDetalleFactura.Recordset!precio
grilla.TextMatrix(i, 4) = dsDetalleFactura.Recordset!subtotal
' dsDetalleFactura.Recordset.NextRecordset
Next

End Sub

Pero como veras me falta columna 2 de la tabla dsarticulos, pero segun el codigo que alla en la columna 1
  #8 (permalink)  
Antiguo 25/10/2008, 11:36
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Para Gente Capaz

No se si entendi, en la columna2 quieres obtener un campo de la tabla dsArticulos, segun el codigoprod de la tabla dsDetalleFactura.???
Si es asi debes unir ambas tablas mediante un INNER JOIN en la sentecia sql ó unir las tablas desde WHERE

Aqui te dejo un ejemplo con ambas formas, si te das cuenta al unir las tablas mediante el codProd puedes disponer de los campos de ambas tablas, adaptalo a lo que necesitas

Código:
SELECT D.numboleta,D.codprod,P.nomprod,D.precioventa,D.cantidad,D.subtotal 
FROM DetalleBoleta D ,Producto P 
WHERE D.codprod=P.codprod and NumBoleta='" & txtBoleta & "'
   

SELECT D.numboleta,D.codprod,P.nomprod,D.precioventa,D.cantidad,D.subtotal 
FROM DetalleBoleta D INNER JOIN Producto P ON D.codProd=P.codProd 
WHERE NumBoleta='" & txtBoleta & "'
Si la ayuda te sirve ó no, no olvides mencionarlo
  #9 (permalink)  
Antiguo 26/10/2008, 16:09
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

Pero yo la grilla la lleno con con el FOR lo que sucede que en la tabla dsdetallefactura no tengo la descripcion de los articulos , solo los codigos

me parece que lo que vos me mandas no va a andar

gracias
  #10 (permalink)  
Antiguo 26/10/2008, 20:58
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Para Gente Capaz

Una vez que tengas unidas ambas tablas simpelmente lo colocas asi
Código:
For i = 1 To grilla.Rows - 1
dsDetalleFactura.Recordset.MoveFirst

dsDetalleFactura.Recordset.FindFirst criterio
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
' dsDetalleFactura.Recordset.NextRecordset
Next
Ojo que el dsDetalleFactura debe contener la union de tablas no entiendo mucho tu forma de programar yo uso recordset y datagrid

saludos
  #11 (permalink)  
Antiguo 27/10/2008, 17:36
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
Una vez que tengas unidas ambas tablas simpelmente lo colocas asi
Código:
For i = 1 To grilla.Rows - 1
dsDetalleFactura.Recordset.MoveFirst

dsDetalleFactura.Recordset.FindFirst criterio
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
' dsDetalleFactura.Recordset.NextRecordset
Next
Ojo que el dsDetalleFactura debe contener la union de tablas no entiendo mucho tu forma de programar yo uso recordset y datagrid

saludos
hice com ome dijiste pero me da un error, " No coincide el tipo en la expresion JOIN "

yo puse al comienzo
dsdetalleFactura.recordsource=" SelecT dsetallefactura.Numfactura,dsdetallefactura.codPro d, dsdetallefactura.fecha,........................... ......from dsdetallefactura inner join dsarticulos ON dsdetallefactura.codigoProd= dsarticulos.codigo where numfactura = ' " & txtnropresupuesto & "' "


no se por que me da el error

o tambien intente y en vez de "dsdetalleFactura.recordsource" puse "Criterio" y tampoco me anduvo , me daba un error como que el whit no esta definido o declarado

gracias
  #12 (permalink)  
Antiguo 28/10/2008, 03: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
Respuesta: Para Gente Capaz

Cita:
Iniciado por gasafonso Ver Mensaje
hice com ome dijiste pero me da un error, " No coincide el tipo en la expresion JOIN "

yo puse al comienzo
dsdetalleFactura.recordsource=" SelecT dsetallefactura.Numfactura,dsdetallefactura.codPro d, dsdetallefactura.fecha,........................... ......from dsdetallefactura inner join dsarticulos ON dsdetallefactura.codigoProd= dsarticulos.codigo where numfactura = ' " & txtnropresupuesto & "' "


no se por que me da el error

o tambien intente y en vez de "dsdetalleFactura.recordsource" puse "Criterio" y tampoco me anduvo , me daba un error como que el whit no esta definido o declarado

gracias
"dsdetallefactura" ¿es una tabla o un control Adodc?
Suponemos que es un control Data ADO:
dsdetallefactura.RecordSource = "SELECT TablaFactura.NumFactura, TablaFactura.CodProd, ... , TablaArticulos.Descripcion FROM TablaFactura INNER JOIN TablaArticulos ON TablaFactura.CodProd = TablaArticulos.codigo WHERE TablaFactura.NumFactura = '" & txtnropresupuesto & "'"

(si 'NumFactura' es un campo de tipo numérico, le quitas las comillas simples).

En el bucle:

Código:
For i = 1 To grilla.Rows - 1  ' ya has controlado que el nº de filas es igual al de registros que devuelve la consulta
' dsDetalleFactura.Recordset.MoveFirst <- eliminar esta línea
' dsDetalleFactura.Recordset.FindFirst criterio <- y esta también
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
' dsDetalleFactura.Recordset.NextRecordset
dsDetalleFactura.Recordset.MoveNext
Next
Nota: Cuando escribas parte de tu código, haz un Copy-Paste, quedará mas claro y sin errores de transcripción.

  #13 (permalink)  
Antiguo 28/10/2008, 07:27
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
"dsdetallefactura" ¿es una tabla o un control Adodc?
Suponemos que es un control Data ADO:
dsdetallefactura.RecordSource = "SELECT TablaFactura.NumFactura, TablaFactura.CodProd, ... , TablaArticulos.Descripcion FROM TablaFactura INNER JOIN TablaArticulos ON TablaFactura.CodProd = TablaArticulos.codigo WHERE TablaFactura.NumFactura = '" & txtnropresupuesto & "'"

(si 'NumFactura' es un campo de tipo numérico, le quitas las comillas simples).

En el bucle:

Código:
For i = 1 To grilla.Rows - 1  ' ya has controlado que el nº de filas es igual al de registros que devuelve la consulta
' dsDetalleFactura.Recordset.MoveFirst <- eliminar esta línea
' dsDetalleFactura.Recordset.FindFirst criterio <- y esta también
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
' dsDetalleFactura.Recordset.NextRecordset
dsDetalleFactura.Recordset.MoveNext
Next
Nota: Cuando escribas parte de tu código, haz un Copy-Paste, quedará mas claro y sin errores de transcripción.

Hola dsDetalleFactura es un control data



gracias
  #14 (permalink)  
Antiguo 28/10/2008, 08:01
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
Hola dsDetalleFactura es un control data



gracias
Pues entonces, cambia en la consulta que puse, 'TablaFactura' por el nombre de la tabla e idem con 'TablaArticulos' y comprueba los nombres de los campos.

  #15 (permalink)  
Antiguo 28/10/2008, 09:17
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
Pues entonces, cambia en la consulta que puse, 'TablaFactura' por el nombre de la tabla e idem con 'TablaArticulos' y comprueba los nombres de los campos.

oik lo pruebo y te aviso


gracias
  #16 (permalink)  
Antiguo 28/10/2008, 14:33
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

no me funciono ,el codigo que yo usaba es este :


Private Sub carga_datos11()
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select cantidad,codigoprod, precio, subtotal,numfactura from tbdetallefactura where numfactura like '" & txtNroPresupuesto.Text & "'"
dsDetalleFactura.Refresh

With grilla
.Rows = dsDetalleFactura.Recordset.RecordCount + 2
'.Cols = dsDetalleFactura.Recordset.Fields.Count
i = 1

Do Until dsDetalleFactura.Recordset.EOF

If dsDetalleFactura.Recordset.EOF Then Exit Do

grilla.TextMatrix(i, 0) = dsDetalleFactura.Recordset!cantidad
grilla.TextMatrix(i, 1) = dsDetalleFactura.Recordset!codigoprod


grilla.TextMatrix(i, 3) = dsDetalleFactura.Recordset!precio
grilla.TextMatrix(i, 4) = dsDetalleFactura.Recordset!subtotal
txtTotal.Text = dsDetalleFactura.Recordset!subtotal

i = i + 1
dsDetalleFactura.Recordset.MoveNext

If i = grilla.Rows Then Exit Do
'Next
Loop
End With
End Sub

__________________________________________________ _____________________
Pero como veran no puedo agregar la columna 2

grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset!descripcion


por eso intente esto, pero no me da resultado:

Private Sub carga_datos11()
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select tbdetallefactura.cantidad,tbdetallefactura.codigop rod, tbdetallefactura.precio, tbdetallefactura.subtotal,tbdetallefactura.numfact ura, tbarticulos.codigo, tbarticulos.descripcion from tbdetallefactura inner join tbarticulos on tbdetallefactura.codigoprod = tbarticulos.codigo where tbdetallefactura.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


PERO TAMPOCO me anduvo me dice que " No se encontro el elemeno de esta coleccion" en referencia a
grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset!descripcion

__________________________________________________ _____________________________________________

Prove de esta manera tb pero tampóco

Private Sub carga_datos() 'nuevo
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select tbdetallecliente.cantidad,tbdetallecliente.codigop rod, tbdetallecliente.subtotal,tbdetallecliente.numfact ura, tbarticulos.descripcion from tbdetallefactura INNER JOIN tbarticulos ON tbdetallefactura.codigoprod = tbarticulos.codigo where numfactura = " & txtNroPresupuesto.Text & " "
dsDetalleFactura.Refresh

With grilla
.Rows = dsDetalleFactura.Recordset.RecordCount + 2

i = 1

Do Until dsDetalleFactura.Recordset.EOF

If dsDetalleFactura.Recordset.EOF Then Exit Do

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
txtTotal.Text = dsDetalleFactura.Recordset!subtotal

i = i + 1
dsDetalleFactura.Recordset.MoveNext

If i = grilla.Rows Then Exit Do

Loop
End With
End Sub


me da el error "No coincide el tipo en la expresion JOIN" error 3615

Última edición por gasafonso; 28/10/2008 a las 17:49
  #17 (permalink)  
Antiguo 29/10/2008, 14:58
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
Pues entonces, cambia en la consulta que puse, 'TablaFactura' por el nombre de la tabla e idem con 'TablaArticulos' y comprueba los nombres de los campos.

no me funciono ,el codigo que yo usaba es este :


Private Sub carga_datos11()
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select cantidad,codigoprod, precio, subtotal,numfactura from tbdetallefactura where numfactura like '" & txtNroPresupuesto.Text & "'"
dsDetalleFactura.Refresh

With grilla
.Rows = dsDetalleFactura.Recordset.RecordCount + 2
'.Cols = dsDetalleFactura.Recordset.Fields.Count
i = 1

Do Until dsDetalleFactura.Recordset.EOF

If dsDetalleFactura.Recordset.EOF Then Exit Do

grilla.TextMatrix(i, 0) = dsDetalleFactura.Recordset!cantidad
grilla.TextMatrix(i, 1) = dsDetalleFactura.Recordset!codigoprod


grilla.TextMatrix(i, 3) = dsDetalleFactura.Recordset!precio
grilla.TextMatrix(i, 4) = dsDetalleFactura.Recordset!subtotal
txtTotal.Text = dsDetalleFactura.Recordset!subtotal

i = i + 1
dsDetalleFactura.Recordset.MoveNext

If i = grilla.Rows Then Exit Do
'Next
Loop
End With
End Sub

__________________________________________________ _____________________
Pero como veran no puedo agregar la columna 2

grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset!descripcion


por eso intente esto, pero no me da resultado:

Private Sub carga_datos11()
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select tbdetallefactura.cantidad,tbdetallefactura.codigop rod, tbdetallefactura.precio, tbdetallefactura.subtotal,tbdetallefactura.numfact ura, tbarticulos.codigo, tbarticulos.descripcion from tbdetallefactura inner join tbarticulos on tbdetallefactura.codigoprod = tbarticulos.codigo where tbdetallefactura.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


PERO TAMPOCO me anduvo me dice que " No se encontro el elemeno de esta coleccion" en referencia a
grilla.TextMatrix(i, 2) = dsDetalleFactura.Recordset!descripcion

__________________________________________________ _____________________________________________

Prove de esta manera tb pero tampóco

Private Sub carga_datos() 'nuevo
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select tbdetallecliente.cantidad,tbdetallecliente.codigop rod, tbdetallecliente.subtotal,tbdetallecliente.numfact ura, tbarticulos.descripcion from tbdetallefactura INNER JOIN tbarticulos ON tbdetallefactura.codigoprod = tbarticulos.codigo where numfactura = " & txtNroPresupuesto.Text & " "
dsDetalleFactura.Refresh

With grilla
.Rows = dsDetalleFactura.Recordset.RecordCount + 2

i = 1

Do Until dsDetalleFactura.Recordset.EOF

If dsDetalleFactura.Recordset.EOF Then Exit Do

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
txtTotal.Text = dsDetalleFactura.Recordset!subtotal

i = i + 1
dsDetalleFactura.Recordset.MoveNext

If i = grilla.Rows Then Exit Do

Loop
End With
End Sub


me da el error "No coincide el tipo en la expresion JOIN" error 3615

--------------------------------------------------------------------------------
  #18 (permalink)  
Antiguo 29/10/2008, 15:01
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Para Gente Capaz

No se ha que se deba el error tio yo programo diferente si puedes postea el ejemplo completo

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

lo recibiste por mail al codigo FRANKo 1809




un abrazo
  #20 (permalink)  
Antiguo 30/10/2008, 09:35
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Para Gente Capaz

Tio sube el archivo a megaupload o rapidshare y postea el link, asi te podran ayudar mas personas.
No me ha llegado nada
  #21 (permalink)  
Antiguo 30/10/2008, 09:40
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
"dsdetallefactura" ¿es una tabla o un control Adodc?
Suponemos que es un control Data ADO:
dsdetallefactura.RecordSource = "SELECT TablaFactura.NumFactura, TablaFactura.CodProd, ... , TablaArticulos.Descripcion FROM TablaFactura INNER JOIN TablaArticulos ON TablaFactura.CodProd = TablaArticulos.codigo WHERE TablaFactura.NumFactura = '" & txtnropresupuesto & "'"

(si 'NumFactura' es un campo de tipo numérico, le quitas las comillas simples).

En el bucle:

Código:
For i = 1 To grilla.Rows - 1  ' ya has controlado que el nº de filas es igual al de registros que devuelve la consulta
' dsDetalleFactura.Recordset.MoveFirst <- eliminar esta línea
' dsDetalleFactura.Recordset.FindFirst criterio <- y esta también
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
' dsDetalleFactura.Recordset.NextRecordset
dsDetalleFactura.Recordset.MoveNext
Next
Nota: Cuando escribas parte de tu código, haz un Copy-Paste, quedará mas claro y sin errores de transcripción.

Avellaneda vos no me podes ayudar con esto

no se como hacer

gracias

PD: Tu ayuda en el foro es muy valiosa y RAPIDA
  #22 (permalink)  
Antiguo 30/10/2008, 09:41
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 sube el archivo a megaupload o rapidshare y postea el link, asi te podran ayudar mas personas.
No me ha llegado nada
que archivo ?

el proyecto de visual b ?
  #23 (permalink)  
Antiguo 30/10/2008, 09:43
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Para Gente Capaz

claro el proyecto o un ejemplo resumido quizas haya otro error por ahi y no te has dado cuenta
  #24 (permalink)  
Antiguo 30/10/2008, 09:49
Avatar de gasafonso  
Fecha de Ingreso: septiembre-2008
Mensajes: 357
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Para Gente Capaz

bueno mas tarde te lo envio por no estoy en mi casa, pero el error tiene que estar ahi en el recordset o el SQL yo no me doy cuenta


vos decis que asi tiene que andar?
  #25 (permalink)  
Antiguo 30/10/2008, 09:53
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
Avellaneda vos no me podes ayudar con esto

no se como hacer

gracias

PD: Tu ayuda en el foro es muy valiosa y RAPIDA
El campo codigoprod de la tabla tbdetallefactura es del mismo tipo que el campo codigo de la tabla tbarticulos?

Es decir, ambos son de tipo numérico o ambos de texto?

  #26 (permalink)  
Antiguo 30/10/2008, 09:59
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
El campo codigoprod de la tabla tbdetallefactura es del mismo tipo que el campo codigo de la tabla tbarticulos?

Es decir, ambos son de tipo numérico o ambos de texto?

ambos son de tipo numerico

en los 2 guardo los codigo de los articulos
  #27 (permalink)  
Antiguo 30/10/2008, 10:06
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
¿Puedes hacer un copy-paste de la consulta que estás utilizando?

  #28 (permalink)  
Antiguo 31/10/2008, 09:16
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
¿Puedes hacer un copy-paste de la consulta que estás utilizando?

la consulta es :

Private Sub carga_datos11()
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select cantidad,codigoprod, precio, subtotal,numfactura from tbdetallefactura where numfactura like '" & txtNroPresupuesto.Text & "'"
dsDetalleFactura.Refresh

With grilla
.Rows = dsDetalleFactura.Recordset.RecordCount + 2
'.Cols = dsDetalleFactura.Recordset.Fields.Count
i = 1

Do Until dsDetalleFactura.Recordset.EOF

If dsDetalleFactura.Recordset.EOF Then Exit Do

grilla.TextMatrix(i, 0) = dsDetalleFactura.Recordset!cantidad
grilla.TextMatrix(i, 1) = dsDetalleFactura.Recordset!codigoprod


grilla.TextMatrix(i, 3) = dsDetalleFactura.Recordset!precio
grilla.TextMatrix(i, 4) = dsDetalleFactura.Recordset!subtotal
txtTotal.Text = dsDetalleFactura.Recordset!subtotal

i = i + 1
dsDetalleFactura.Recordset.MoveNext

If i = grilla.Rows Then Exit Do
'Next
Loop
End With
End Sub
  #29 (permalink)  
Antiguo 31/10/2008, 10:03
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
la consulta es :

Private Sub carga_datos11()
Dim i As Long
Dim criterio As String
dsDetalleFactura.RecordSource = " select cantidad,codigoprod, precio, subtotal,numfactura from tbdetallefactura where numfactura like '" & txtNroPresupuesto.Text & "'"
dsDetalleFactura.Refresh

With grilla
.Rows = dsDetalleFactura.Recordset.RecordCount + 2
'.Cols = dsDetalleFactura.Recordset.Fields.Count
i = 1

Do Until dsDetalleFactura.Recordset.EOF

If dsDetalleFactura.Recordset.EOF Then Exit Do

grilla.TextMatrix(i, 0) = dsDetalleFactura.Recordset!cantidad
grilla.TextMatrix(i, 1) = dsDetalleFactura.Recordset!codigoprod


grilla.TextMatrix(i, 3) = dsDetalleFactura.Recordset!precio
grilla.TextMatrix(i, 4) = dsDetalleFactura.Recordset!subtotal
txtTotal.Text = dsDetalleFactura.Recordset!subtotal

i = i + 1
dsDetalleFactura.Recordset.MoveNext

If i = grilla.Rows Then Exit Do
'Next
Loop
End With
End Sub
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

  #30 (permalink)  
Antiguo 31/10/2008, 11:47
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Para Gente Capaz

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?

Última edición por franko1809; 31/10/2008 a las 12:37
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 13:39.