2009-06-18 23 views
0

私は、割り当てられた注文書に基づいてサプライヤーに送られたすべてのアイテムの数を取得しようとしています。しかし、注文書インスタンスに基づいていくつかの項目を表示するコントロールを得ることができないようです - #nameのどちらかを投げ続けますか?または#error!フォームがアクティブになると、テキストボックスにメッセージが表示されます。DCountとSQL SELECT COUNT(*)の比較

tblPOGaugeDetail

のための文
USE [instkeeper_test] 
GO 


SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[tblPOGaugeDetail](
    [intItemPOID] [int] IDENTITY(1,1) NOT NULL, 
    [intGagePOID] [int] NOT NULL, 
    [strGageDetailID] [nvarchar](50) NULL, 
    [datGageSent] [datetime] NULL, 
    [datGageReceived] [datetime] NULL, 
    [bolGageCalibrate] [bit] NOT NULL, 
    [bolGageRepair] [bit] NOT NULL, 
    [bolGageEvaluate] [bit] NOT NULL, 
    [bolGageAccredited] [bit] NOT NULL, 
    [bolGageReturned] [bit] NOT NULL, 
    [bolGageException] [bit] NOT NULL, 
    [bolGageExceptResolved] [bit] NOT NULL, 
    [bolGageLeavePriceBlank] [bit] NOT NULL, 
    [intGageCost] [real] NULL, 
    [intTurnaroundDaysOut] [int] NULL, 
    [SSMA_TimeStamp] [timestamp] NOT NULL, 
CONSTRAINT [tblPOGaugeDetail$PrimaryKey] PRIMARY KEY CLUSTERED 
(
    [intItemPOID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] WITH CHECK ADD CONSTRAINT [tblPOGaugeDetail$tblPODetailtblPOGaugeDetail] FOREIGN KEY([intGagePOID]) 
REFERENCES [dbo].[tblPODetail] ([intPurchaseOrderInstance]) 
ON UPDATE CASCADE 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] CHECK CONSTRAINT [tblPOGaugeDetail$tblPODetailtblPOGaugeDetail] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [intGagePOID] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((1)) FOR [bolGageCalibrate] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [bolGageRepair] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [bolGageEvaluate] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [bolGageAccredited] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [bolGageReturned] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [bolGageException] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [bolGageExceptResolved] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [bolGageLeavePriceBlank] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [intGageCost] 
GO 

ALTER TABLE [dbo].[tblPOGaugeDetail] ADD DEFAULT ((0)) FOR [intTurnaroundDaysOut] 
GO 

私は数が

SELECT dbo_tblPODetail.intPurchaseOrderInstance, dbo_tblPODetail.strSupplierCode, dbo_tblPODetail.bolPOOpen, dbo_tblPODetail.intPONumber, dbo_tblPODetail.datDateSent 
FROM dbo_tblPODetail 
WHERE (((dbo_tblPODetail.bolPOOpen)=True)) 
ORDER BY dbo_tblPODetail.datDateSent; 

に表示したいという購入注文の詳細を照会文を作成しますtblPODetail

USE [instkeeper_test] 
GO 


SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[tblPODetail](
    [intPurchaseOrderInstance] [int] IDENTITY(1,1) NOT NULL, 
    [intPONumber] [int] NOT NULL, 
    [datDateEntered] [datetime] NOT NULL, 
    [bolPOOpen] [bit] NOT NULL, 
    [intRMANumber] [nvarchar](255) NULL, 
    [strSupplierCode] [nvarchar](50) NOT NULL, 
    [strSupplierLastAddress] [nvarchar](50) NULL, 
    [strSupplierLastCity] [nvarchar](50) NULL, 
    [strSupplierLastState] [nvarchar](50) NULL, 
    [strSupplierLastPostalCode] [nvarchar](50) NULL, 
    [strSupplierLastCountry] [nvarchar](50) NULL, 
    [strSupplierLastPhone] [nvarchar](50) NULL, 
    [strSupplierLastFax] [nvarchar](50) NULL, 
    [datDateSent] [datetime] NULL, 
    [datDateReceived] [datetime] NULL, 
    [bolAdvGageTrakNoTouch] [bit] NOT NULL, 
    [bolAdvHardCopies] [bit] NOT NULL, 
    [bolFreightShip] [bit] NOT NULL, 
    [bolReturnableUsed] [bit] NOT NULL, 
    [bolInHouse] [bit] NOT NULL, 
    [strUPSTrackNumOut] [nvarchar](255) NULL, 
    [strFedExTrackNumOut] [nvarchar](255) NULL, 
    [strFreightTrackNumOut] [nvarchar](255) NULL, 
    [strUPSTrackNumIn] [nvarchar](255) NULL, 
    [strFedExTrackNumIn] [nvarchar](255) NULL, 
    [strFreightTrackNumIn] [nvarchar](255) NULL, 
    [SSMA_TimeStamp] [timestamp] NOT NULL 
) ON [PRIMARY] 

GO 

ALTER TABLE [dbo].[tblPODetail] WITH CHECK ADD CONSTRAINT [SSMA_CC$tblPODetail$strSupplierCode$disallow_zero_length] CHECK ((len([strSupplierCode])>(0))) 
GO 

ALTER TABLE [dbo].[tblPODetail] CHECK CONSTRAINT [SSMA_CC$tblPODetail$strSupplierCode$disallow_zero_length] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__intPO__6C190EBB] DEFAULT ((0)) FOR [intPONumber] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__datDa__6D0D32F4] DEFAULT (getdate()) FOR [datDateEntered] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__bolPO__6E01572D] DEFAULT ((1)) FOR [bolPOOpen] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__bolAd__6EF57B66] DEFAULT ((1)) FOR [bolAdvGageTrakNoTouch] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__bolAd__6FE99F9F] DEFAULT ((1)) FOR [bolAdvHardCopies] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__bolFr__70DDC3D8] DEFAULT ((0)) FOR [bolFreightShip] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__bolRe__71D1E811] DEFAULT ((0)) FOR [bolReturnableUsed] 
GO 

ALTER TABLE [dbo].[tblPODetail] ADD CONSTRAINT [DF__tblPODeta__bolIn__72C60C4A] DEFAULT ((0)) FOR [bolInHouse] 
GO 

のための文を作成し、私はしました私はDCount()とSELECT COUNT(*)の両方で少し読んだので、ちょっと不満でした。彼らが働くことはできません。どんな助けでも大歓迎です!前もって感謝します!

- 編集2009年6月18日1542時間@ -

これは、現在のイベントでは、サブフォームのは、トリガされたとき、私はコードで使用しようとしたSELECT COUNTの例である:

SELECT COUNT(*) AS ItemsSent 
FROM [dbo_tblPOGaugeDetail] 
WHERE [dbo_tblPOGageDetail]![intGagePOID] = [dbo_tblPODetail]![intPurchaseOrderInstance] 

これは、サブフォームのコントロールに添付された= DCOUNTステートメントの例です。

=DCOUNT("*", "[dbo_tblPOGaugeDetail]", "[intGagePOID] = [Forms]![frmSupplierInfoMain]![subfrmOpenPOBySupplierID]![intPurchaseOrderInstance]") 

どちらも悲しいことです。

+0

実行しようとしている選択カウントを表示できますか? – BIBD

+0

私はあなたが手動でその選択クエリを実行するときに動作すると仮定しています。どのようにTextBoxに結果を取得していますか? – BIBD

+0

SQL SELECT COUNT(*)ステートメントを実行した後、コントロールの値をそのDAOレコードセット値に設定してレコードセットとして取得します。しかし、どちらもうまくいかなかった。 –

答えて

1

クエリはカウント(*)なしで機能しますか?

DCountの最初の引数に実際のフィールド名を使用します。 where文字列からコントロール名を取得します。

For DCOUNT("[intItemPOID],"[dbo_tblPOGaugeDetail]","[intGagePOID]=" & Forms]![frmSupplierInfoMain]![subfrmOpenPOBySupplierID]![intPurchaseOrderInstance]) 
+0

DCountが使用されていたドメイン(テーブル)(この場合はdbo_tblPOGaugeDetail)からのフィールド名のみを参照することができたのは私の理解です(間違いがあるかもしれません)。元のクエリが引き出されているdbo_tblPODetailテーブルのintPuchaseOrderInstanceフィールドを実際に使用できますか? –

+0

#Nameを取得しましたか?私は、サブフォーム上のコントロールの元に、次のDcount関数をしようとすると: = Dcount関数(!!![dbo_tblPOGaugeDetail] [intItemPOID]、[dbo_tblPOGageDetail]、[dbo_tblPOGaugeDetail] [intGagePOID] = [dbo_tblPODetail] [intPurchaseOrderInstance]) –

+0

Dcount関数でありますSQLのように: "Field_Name"、 "Table_Name"、 "field_name = 'G'" フォーム上にオブジェクトではなく文字列が必要です(フィールド、テーブル、条件の名前と等しい文字列値でない限り) – JeffO