border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU
  #1 (permalink)  
Antiguo 26-05-2006, 01:37:36
Gran Participación en el Foro
 
Registrado: ene 2005
Posts: 113
Juan Francisco Valoración +2
Predeterminado Problema con una busqueda en visual basic

Buenas Tardes: tengo en siguiente problema con una busqueda que deseo realizar en una base de datos en access con visual basic, tengo un combo el cual cargo el numero de facturas pero necesito obtener el nombre del cliente que se encuentra en la tabla de clientes pero en la tabla de facturas tengo el codigo de cliente, necesito hacer una busqueda por medio del codigo de cliente que esta en facturas realizarla en la tabla de cliente.
El programa fuente es el siguiente:

Option Explicit
Dim tempfact As Long
Private Sub Form_Load()
Rs_Fa.Source = "SELECT * FROM Facturas"
Rs_Fa.ActiveConnection = Conn
Rs_Fa.Open
tempfact = Rs_Fa!Numero_Factura
Do While Not Rs_Fa.EOF
If tempfact = Rs_Fa!Numero_Factura Then
Rs_Fa.MoveNext
Else
Combo1.AddItem tempfact & Space(2) & Busca_Cliente(tempfact)
tempfact = Rs_Fa!Numero_Factura
End If
Loop
Combo1.AddItem tempfact & Space(2) & Busca_Cliente(tempfact)
Combo1.Refresh
End Sub

Private Function Busca_Cliente(codigo As Long) As String
Rs_St.Source = "SELECT * FROM Clientes"
Rs_St.ActiveConnection = Conn
Rs_St.Open
Do While Not Rs_St.EOF
If codigo = Rs_St!Codigo_Cliente Then
Busca_Cliente = Rs_St!Nombre_Cliente
Else
Rs_St.MoveNext
End If
Loop
End Function

Cuando ejecuto me envia el Error 3705 el cual me dice que la operacion no esta permitida.
Realmente no idea de lo que esta pasando para recoger el valor que necesito. Por lo demas todo lo que es la apertura esta correcto solo es aqui que me envia errores.

Si alguien me puede ayuda se lo agradeceria..
Gracias y Saludos desde Panama.
Responder Con Cita
  #2 (permalink)  
Antiguo 26-05-2006, 17:52:07
Avatar de J.M.Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.490
J.M.Movilla Valoración +2
Predeterminado Re: Problema con una busqueda en visual basic

Por lo que veo, tempfact es el valor que le pasas a la función Busca_Cliente. En esta función comparas si ese valor es igual al Codigo_Cliente, para presentar su nombre cuando sea positivo. Por lo tanto, deberás pasar el Código del cliente en el fichero de Facturas... Y sin embargo, la línea tempfact = Rs_Fa!Numero_Factura deja bien claro que lo que le estás pasando es el Código de la factura...

Pero ese rodeo de la función de búsqueda puedes evitarlo si defines un recordset en el que incluyas el nombre del cliente, tomado del fichero Clientes, así:
Código:
Option Explicit

Private Sub Form_Load()
  With Rs_Fa
    .Source = "SELECT a.*, b.Nombre_Cliente FROM Facturas a, Clientes b Where a.Codigo_Cliente = b.Codigo_Cliente Order by Numero_Factura"
    .ActiveConnection = Conn
    .Open
    Do While Not .Eof
      Combo1.AddItem !Numero_Factura & Space(2) & !Nombre_Cliente
      .MoveNext
    Loop
  End With
End Sub
Espero no haber cometido errores sintácticos, por hacerlo al vuelo. Bueno, y no sé si el código del cliente lo llamas [Codigo_Cliente] en ambas tablas...
__________________
José María Movilla Cuadrado
______________________
www.foro.vb-mundo.com
www.vb-mundo.com

Responder Con Cita
  #3 (permalink)  
Antiguo 26-05-2006, 21:12:30
Gran Participación en el Foro
 
Registrado: ene 2005
Posts: 113
Juan Francisco Valoración +2
Predeterminado Muchas Gracias por la ayuda

Gracias Sr. J.M.Movilla por la aclaracion del error, creo que estaba cometiendo un error bien grabe.

Muchas Gracias, por la ayuda, realizare las pruebas.

Saludos desde Panama, Gracias nuevamente.
Responder Con Cita
  #4 (permalink)  
Antiguo 31-05-2006, 22:02:19
Gran Participación en el Foro
 
Registrado: ene 2005
Posts: 113
Juan Francisco Valoración +2
Predeterminado Tengo otra duda

Buenas Tardes segun las intrucciones de SQL que me proporciono el Sr. J.M.Movilla, me funciona ya que puedo recoger el Nombre del Cliente de la Tablas clientes, que pasa ahora es que tengo en la tablas facturas, facturas con 1, 2 o 3 renglones cada una. Necesito solo tener el solo numero de factura y no que se me repita los renglones de todas las facturas ya que lo que necesito desplegar es un solo total de facturas con el nombre del cliente, el numero de factura y el monto de la factura. Presento el código de fuente para que me ayuden y el resultado que espero tener.
Private Sub Form_Load()
DataGrid1.Enabled = True
With Rs_Fa
.Source = " SELECT a.*, b.Nombre_Cliente FROM Facturas a, Clientes b " _
& "WHERE a.Codigo_Cliente = b.Codigo_Cliente ORDER BY Numero_Factura"
.ActiveConnection = Conn
.Open
Call ConFacturas.Crear_Temporal
.MoveFirst
Do While Not .EOF
Rs_St.AddNew
Rs_St!Numfact = Rs_Fa!Numero_Factura
Rs_St!Nombre = Rs_Fa!Nombre_Cliente
Rs_St.Update
Rs_Fa.MoveNext
Loop
Rs_St.MoveFirst
Set DataGrid1.DataSource = Rs_St
DataGrid1.Refresh
End With
End Sub
Sub Crear_Temporal()
With Rs_St
.Fields.Append "Numfact", adDouble, 10.2, adFldIsNullable
.Fields.Append "Nombre", adVarChar, 30, adFldIsNullable
.Open
End With
End Sub
El codigo fuente funciona correctamente pero no me despliega la informacion como la deseo en pantalla, envio un escreen de lo que esta haciendo el codigo fuente.
Si alguien me puede aclara lo que esta pasando, por favor se lo agradeceria
Gracias y saludos desde Panama
Archivos Adjuntos
Tipo de Archivo: doc screen.doc (54,0 KB, 5 visitas)
Responder Con Cita
  #5 (permalink)  
Antiguo 02-06-2006, 01:15:34
Gran Participación en el Foro
 
Registrado: ene 2005
Posts: 113
Juan Francisco Valoración +2
Predeterminado Me puede alguien ayudar con mi Problema

Disculpe explique un caso sobre un pequeño problema que tengo, con datagrid, me puede alguien ayudar por Favor

Gracias y saludos de Panama
Responder Con Cita
  #6 (permalink)  
Antiguo 02-06-2006, 02:27:55
Avatar de juancarlosavalos
Gran Participación en el Foro
 
Registrado: jul 2005
Ubicación: Libertad / Merlo prov Buenos Aires
Posts: 206
juancarlosavalos Valoración +2
Predeterminado Re: Me puede alguien ayudar con mi Problema

No das muchos datos sobre tus tablas como para poder ayudarte con certeza, pero puedes probar el agregar el predicado Distinctrow a tu consulta, para que evite los datos duplicados. Esto no me ha funcionado en cualquier tipo de consulta, así que prueba y despues nos comentas. Tu consulta quedaría así:

Código:
" SELECT DISTINCTROW a.*, b.Nombre_Cliente FROM Facturas a, Clientes b " _ 
& "WHERE a.Codigo_Cliente = b.Codigo_Cliente ORDER BY Numero_Factura"
Responder Con Cita
  #7 (permalink)  
Antiguo 02-06-2006, 20:27:38
Gran Participación en el Foro
 
Registrado: ene 2005
Posts: 113
Juan Francisco Valoración +2
Predeterminado Gracias por la ayuda

Muchas Gracias Juan Carlos por la ayuda, explico algo mas detallado, yo tengo dos tablas FACTURAS Y CLIENTES. En la primera yo tengo el numero de factura, codigo del producto, codigo de cliente, renglones de la facturas, fecha de emision de la factura, numero de cotizacion, precio de venta, cantidad vendida, total (que es la multiplicacion del precio de venta x la cantidad vendida), observaciones. En la segunda tabla tengo Codigo de cliente, nombre del cliente, direccion, telefono, telefono fax. Mi idea era utilizar un datagrid para realizar un despliegue de informacion de tabla Facturas solo con la informacion resumida, es decir si por lo menos un cliente tiene una factura con tres renglones o sea varios productos facturas, solo desplegar el datagrid los siguientes valores ejemplo:

Numero Factura Nombre del Cliente fecha factura Sub-Total Impuesto Total Final
----999999-------xxxxxxxxxxxxxxx--99/99/9999---9999.99----99.99--- 99999.99
----999999-------xxxxxxxxxxxxxxx--99/99/9999---9999.99----99.99--- 99999.99

y asi sucesivamente y si en caso tal el operador desea consultar el detalle de ese cliente o sea los renglones de la factura con solo seleccionar en el datagrid el la fila se pueda desplegar el detalle de esa factura en la parte de abajo ya sea listview u otro componente.
Lo que me esta pasando es que mi consulta en el data grid se esta desplegando asi
si la factura 88888 tiene tres renglones se despliega de la siguiente manera.

Numero Factura Nombre del Cliente fecha factura Sub-Total Impuesto Total Final
-88888-----------Pedro Galan---------02/06/2006----12.99------0.99-----14.01----
-88888-----------Pedro Galan---------02/06/2006-----2.99------0.99-----14.01----
-88888-----------Pedro Galan---------02/06/2006----15.99------0.99-----14.01----
y lo que deseo es que solo se depliegue una sola vez con todos los totales una sola vez.
Eso es lo que me esta pasando.

Si alguien me puede ayudar, se lo agradeceria.

Gracias y Saludos desde Panama
Responder Con Cita
  #8 (permalink)  
Antiguo 03-06-2006, 00:48:30
Avatar de juancarlosavalos
Gran Participación en el Foro
 
Registrado: jul 2005
Ubicación: Libertad / Merlo prov Buenos Aires
Posts: 206
juancarlosavalos Valoración +2
Predeterminado Re: Gracias por la ayuda

Disculpa, pero en tu pregunta anterior tenías esta consulta:
Código:
" SELECT a.*, b.Nombre_Cliente FROM Facturas a, Clientes b " _ 
& "WHERE a.Codigo_Cliente = b.Codigo_Cliente ORDER BY Numero_Factura"
y con ella quieres que muestre esto:
Cita:
Numero Factura Nombre del Cliente fecha factura Sub-Total Impuesto Total Final
----999999-------xxxxxxxxxxxxxxx--99/99/9999---9999.99----99.99--- 99999.99
----999999-------xxxxxxxxxxxxxxx--99/99/9999---9999.99----99.99--- 99999.99
No me queda claro lo que quieres, pero me parece que deberías hacer una agrupación (group by) del campo Numero _Factura y ver lo que sucede.

Código:
" SELECT  a.Numero_Factura, b.Nombre_Cliente,a.Fecha_Factura,SUM(a.Precio_Venta * a.Cantidad_Vendida) AS [Sub-Total] FROM Facturas AS a, Clientes AS b " _ 
& "GROUP BY a.Numero_Factura"
Ten en cuenta que no se los nombres reales de tus campos, con lo cual los tuve que inventar.
Si esto funciona como quieres puedes agregar los campos que faltan y ver lo que sucede.
Responder Con Cita
  #9 (permalink)  
Antiguo 06-06-2006, 16:07:36
Gran Participación en el Foro
 
Registrado: ene 2005
Posts: 113
Juan Francisco Valoración +2
Predeterminado Gracias por la ayuda

Bueno amigo, creo me has ayudado aclarando un poco mas mis dudas realizare las pruebas que me dices y luego comentare lo realizado.

Gracias, Saludos desde Panama.
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Problema con TreeView en Visual Basic 6.0 coloso Visual Basic 6.00 1 12-09-2006 10:16:12
PROBLEMA CON CONSULTA SQL EN VISUAL BASIC.NET HACK_SMART Visual Basic.NET 2003 & 2005 2 16-03-2006 15:06:35
'Visual Basic ha detectado un problema y debe cerrarse... luisito Visual Basic 6.00 9 07-12-2005 21:25:02
Problema con Visual Basic aflowers Visual Basic 6.00 1 17-09-2004 01:00:00
problema con visual basic y base de datos pedrojojo Visual Basic 6.00 4 11-02-1970 15:53:05


La franja horaria es GMT. Ahora son las 06:15:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right