2013-12-10 4 views
0

참고 : 명확한 설명을 위해 전체 질문이 다시 작성되었습니다.액세스 한 셀 값을 다른 셀 값의 값에 의존하는 방법

나는 겉으로보기에는 단순한 문제에 관해서 내가 뭘하고 싶은지 정확하게 알고 있지만 어떻게해야하는지에 관해서는 내 머리를 찢어 버렸다.

나는 각 항목은 회사가 하나 개의 제품을 만들어 다음과 같은 관련 열

Products: ProductID, ProductName 

2 개 테이블을 가지고있다. ProductID는 기본 키입니다. 새로운 항목은 매우 드물게 이루어집니다.

Orders: OrderID, ProductName, ArticleID 

각 항목은 회사에 주문한 것입니다. OrderID는 기본 키입니다. 새로운 항목이 계속 만들어집니다.

사용자가 Orders.ProductName에 제품의 이름을 입력 :

여기 내가 찾는 사용자 경험입니다.

주문. 제품 ID가 자동으로 제품의 ProductID가됩니다. Product 테이블로 이동하여 ProductName이 사용자가 입력 한 이름과 일치하는 행으로 이동하여 해당 행에 대한 ProductID를 반환합니다.

Excel에서는 "="을 셀에 입력 한 다음 필요한 코드를 입력하는 것과 같습니다. 나는 다른 곳에 존재하기 때문에 자동으로 생성 된 필드에 어떤 데이터도 저장하고 싶지 않으며 두 개의 다른 장소에 동일한 정보를 저장하지 않는 것이 좋습니다.

내부 조인을 비롯한 여러 SQL 쿼리를 시도했지만 코드에서 미리 정의되지 않은 단일 셀에서 정보를 가져 오는 방법을 이해할 수 없습니다. ProductID를 가져올 행은 사용자 작성 제품 이름).

다시 말하지만 :이 모든 작업은 데이터가 셀로 끝나는 데이터를 입력하는 것이 아니라 모든 데이터가 변경 될 때 항상 재평가되는 기능으로 모든 작업을 수행하는 것이 바람직합니다. "= SUM (B4, B5)"in excel)

+0

당신이 그 행의 고유 ID에 맞는 레코드를 원하는 뜻 SQL Server 또는 일련 번호 MS Access에서의 정체성과은 articleID을? 그게 사실이라면 왜 id = 당신이 원하는 이드가 아닌가? – lemunk

+0

MS Access를 사용할 때 왜 mysql 태그입니까? – peterm

+0

@StevenSmith : 문제는 코드에 입력 된 특정 행이 아닌 모든 행에서 쿼리가 작동하기를 원합니다. –

답변

0

잘 모르겠지만 여기에 간다.

검색어가 이유에 따라 선택적이어야하는 것 외에 다른 것 같습니다.

현재 두 테이블 모두와 일치하는 모든 레코드가 반환됩니다. 드롭 다운 상자를 기반으로 필터링하고 싶습니까?

이것이 사실이라면 MS SQL 저장 프로 시저를 사용하여이 작업을 수행 할 수 있습니다. 다음과 같은 :

USE [YourDatabaseName] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE PROCEDURE [dbo].[MyProcedureName] 
@dropDownID int 
AS 

SELECT Articles.ArticleID 
FROM Articles 
INNER JOIN Orders ON Articles.ArticleNr=Orders.ArticleNr 
WHERE articles.ID = @dropDownID 

는 다음 코드 VB 또는 C#에서 단순히 절차 선택한 드롭 다운의 값을 전달하고 결과를 반환합니다.

네가 쓴거야?

+0

Orders.ArticleNr 드롭 다운 상자가 제 위치에 있으며 여기에서 Articles.ArticleNr에 나타나는 값을 선택할 수 있습니다. 드롭 다운 상자에서 정보를 얻는 것에 대해 신경 쓰지는 않습니다. ArticleID가 쓰여진/선택한 ArticleNr이 의미하는 것이 무엇인지 파악할 수 있기를 바랍니다. 나는 당신의 쿼리를 시도했지만 MS Access는 "USE"를 인식하지 못하므로 쿼리를 실행할 수 없습니다. –

+0

아, 내 실수는 당신의 액세스를 relize 잊어 버렸습니다. – lemunk

0

당신이

articleTable처럼 설계 될 수있다 -은 articleID ArticleNr

주문 - 새로운 주문이 주문 테이블에 입력하는 경우에 OrderID는

select Orders.OrderID, Orders.ArticleID, articleTable.ArticleNr 
from Orders 
    left join articleTable on Orders.ArticleID = articleTable.ArticleID 

을은 articleID 사용자가 ArticleNr에 "96964-A"에 을 입력하면 ArticleID이 자동으로 이 "2"가됩니다. 으로 잘 돌아가는 것이 좋습니다.

+0

기사. 기사 ID는 자동 번호입니다. (및 해당 테이블의 기본 키) 자동화하고 싶은 것은 ** 주문 **. ArticleID입니다. Orders.ArticleNr이 데이터베이스에 입력되면 동일한 행의 Orders.ArticleID 값이 ArticleNr 값이 일치하는 행의 Articles.ArticleID가되기를 원합니다. 또한 쿼리를 실행했지만 찾고있는 것보다 다른 방법 인 것 같습니다. 쿼리를 반환하려면 Article.ArticleID의 인스턴스가 필요합니다. –

관련 문제