Skip to content
Advertisement

DCount vs. SQL SELECT COUNT(*)?

I am trying to get a count of all items sent to a supplier based on the purchase order they are assigned to. But I can’t seem to get the control to show a number of items based on the purchase order instance – it keeps throwing either a #name? or #error! message in the text box when the form is activated.

Create statement for 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

Create statement for 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

Query statement for purchase order details that I want the counts to appear in

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;

I’ve been a bit frustrated as I’ve read a bit on both DCount() and SELECT COUNT(*), but can’t seem to get -either- of them to work. Any help would be greatly appreciated! Thanks in advance!

— Edited 06/18/2009 @ 1542 hours —

This is an example of the SELECT COUNT I tried to use in code when the subform’s On Current event triggered:

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

This is an example of the =DCOUNT statement as attached to the control in the subform.

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

Neither of these worked – sadly.

Advertisement

Answer

Does your query work without the count(*)?

Use an actual field name for the first arguement of DCount Get the control name out of the where string.

For DCOUNT("[intItemPOID],"[dbo_tblPOGaugeDetail]","[intGagePOID]=" & Forms]![frmSupplierInfoMain]![subfrmOpenPOBySupplierID]![intPurchaseOrderInstance])
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement