sql - una - funcion encontrar en access
dlookup varias tablas y establecer el cuadro de texto para obtener acceso 2007 (2)
Su última afirmación de Dlookup parece absolutamente correcta, así que estoy un poco confundido acerca de por qué no está funcionando; sin embargo, es posible que pueda resolver el problema de esta manera:
Combox2_AfterUpdate (Or whatever the event is called)
Dim rs As Recordset
Set rs = Currentdb.OpenRecordset("SELECT C.Company, R.Customer_ID " & _
"FROM Customer As C, RFI As R " & _
"WHERE C.Customer_ID = R.Customer_ID " & _
"AND R.RFI_ID =" & [Forms]![Request for Info Form]![Combo90] & " " & _
"ORDER BY C.Company")
CompanyTB = rs!Company
rs.Close
Set rs = Nothing
End Sub
Trataré de analizar mi problema lo mejor que pueda y explicaré lo que intento lograr. En primer lugar, tengo tres tablas:
**RFI** (stands for Request For Information)-
Fields: rfi_id, Customer_id .....
**RFI_project** -
Fields: rfipro_id, project_id, rfi_id *"....." represents other unnecessary fields*
**Customer** -
Fields: Customer_id, company .....
Tengo un formulario de acceso con dos cuadros combinados. En el primer cuadro combinado, selecciono el nombre de un proyecto, en cuyo punto el segundo cuadro de texto cambia para mostrar los * rfi_id * ''s donde coinciden con el nombre del proyecto seleccionado. Ahora lo que trato de hacer es esto: cuando selecciono un * rfi_id * en el segundo cuadro combinado, quiero que se muestre en un cuadro de texto en mi formulario la empresa donde el valor * rfi_id * coincide con el valor en el cuadro combinado. Es un poco complicado debido a la forma en que se unen las tablas ... esto es lo que esencialmente trato de mostrar en el campo de la caja de texto en términos de SQL:
SELECT Customer.company, RFI.Customer_id
FROM Customer, RFI
WHERE (((Customer.Customer_id)=[RFI].[Customer_id]) AND ((RFI.rfi_id)=[Forms]![Request for Info Form]![Combo90]))
ORDER BY Customer.company;
Para hacer esto, he intentado lo siguiente sin éxito. En el evento posterior a la actualización de mi segundo cuadro combinado, inserté lo siguiente:
companyTB = DLookup("company", "Customer", "Customer_id =" & DLookup("Customer_id", "RFI" And "rfi_id =" & [Forms]![Request for Info Form]![cmbRFI]))
Cuando cambio el valor del cuadro combinado obtengo el error Error en tiempo de ejecución ''13'': No coincide el tipo. Intenté buscar lo que hice incorrectamente, pero aparentemente este es un error muy amplio y no puedo encontrar nada similar (o eso lo entiendo). También probé esto en su lugar -
companyTB = DLookup("company", "Customer", "Customer_id =" & DLookup("Customer_id", "RFI", "rfi_id =" & cmbRFI))
lo que me da el siguiente error: Error en tiempo de ejecución ''3075'': error de sintaxis (operador faltante) en la expresión de consulta. De todos modos, ¿alguien sería tan amable de darme un desglose de lo que tengo que hacer para lograr esto, o lo que estoy haciendo mal (o tal vez una mejor manera de hacerlo?). Perdónenme por ser aparentemente estúpido en esto, apenas he comenzado a trabajar con acceso más profundo en las últimas 3 semanas más o menos. Gracias.
Su primer DLookUp tiene una sintaxis incorrecta:
companyTB = DLookup("company", "Customer", "Customer_id ="
& DLookup("Customer_id", "RFI" And "rfi_id ="
& [Forms]![Request for Info Form]![cmbRFI]))
Lo he dividido en tres líneas para que esto sea más fácil de ver. La segunda línea tiene Y entre "RFI" y "rfi_id" cuando debería tener una coma.
companyTB = DLookup("company", "Customer", "Customer_id ="
& DLookup("Customer_id", "RFI", "rfi_id =" & cmbRFI))
El error que está recibiendo en su segundo combo parece ser debido al resultado devuelto por cmbRFI. Puede verificar esto completando un rfi_id real, en lugar de la referencia al combo y configurando un cuadro de texto igual a cmbRFI y ver lo que está devolviendo. Combo puede ser difícil porque la columna mostrada y la columna encuadernada pueden ser diferentes.
Puede ser conveniente configurar su cuadro combinado con varias columnas, como se muestra en la consulta, para que el origen de filas sea:
SELECT rfi.ID, Customer.company, RFI.Customer_id
FROM Customer
INNER JOIN RFI
ON Customer.Customer_id=RFI.Customer_id
ORDER BY Customer.company;
(o las tres tablas, unidas, si es necesario)
Entonces
Column count = 3
Column widths = 2cm;0;0
Bound column = 1
Ahora puede consultar la segunda columna en su cuadro de texto:
= cmbRFI.Column(1)
Las columnas están numeradas desde cero.
Siempre vale la pena leer en sql antes de trabajar con Access:
Fundamental Microsoft Jet SQL for Access 2000
Intermediate Microsoft Jet SQL for Access 2000
Advanced Microsoft Jet SQL for Access 2000