enumeration in a module

  • Thread starter Thread starter Chris Strug
  • Start date Start date
C

Chris Strug

Hi,

I have a list of names associated with character string abbreieviations.

For example:

....
rff_GoodsDeclarationNumber = "AEE"
rff_ConsigneesShipmentReferenceNumber = "AAO"
rff_CarriersAgentReferenceNumber = "AAY"
rff_CustomsDeclarationNumber = "ABT"
rff_VehicleLicenceNumber = "ABZ"
rff_AdditionalReferenceNumber = "ACD"
rff_TransportContractReferenceNumber = "AHI"
rff_ContainerPrefix = "AKB"
rff_VehicleIdentificationNumber = "AKG"
rff_TransportCostsReferenceNumber = "AKW"
rff_PersonalIdentityCardNumber = "ARJ"
rff_FlatRackContainerBundleIdentificationNumber = "ATW"
rff_PlaceOfPositioningReference = "AUA"
rff_BillOfLadingNumber = "BM"
rff_BookingReferenceNumber = "BN"
rff_BlockstowReference = "BST"
rff_BatchLotNumber = "BT"
rff_CarriersReferenceNumber = "CN"
....

Now, what I want to be able to do is create a enumerated datatype restricted
to the above values that I can use when creating a datatype or argument.

For example, assuming that I create the above as "ReferenceQualifier"

dim Ref as ReferenceQualifier.

Ref is now restricted to the values above. If I assign one of the constant
names to Ref, it returns the string code associated with it.

E.g.

ref = rff_BillOfLadingNumber
msgbox Ref

Outputs 'BM'

I realise that this is more of a Vb than Access question but ask you to take
pity on me!

I have tried creating an enum as follows:

public enum ReferenceQualifier
rff_TransportContractReferenceNumber = "AHI"
rff_ContainerPrefix = "AKB"
rff_VehicleIdentificationNumber = "AKG"
rff_TransportCostsReferenceNumber = "AKW"
rff_PersonalIdentityCardNumber = "ARJ"
rff_FlatRackContainerBundleIdentificationNumber = "ATW"
rff_PlaceOfPositioningReference = "AUA"
rff_BillOfLadingNumber = "BM"
rff_BookingReferenceNumber = "BN"
rff_BlockstowReference = "BST"
end enum

But I receive the error message "Compile Error, Type Mismatch" on the first
line of the enum declaration when I try to run the code...

Is enum the right approach here?

Any and all advice is gratefully received.

Thanks

Chris,
 
hi Chris,

Chris said:
public enum ReferenceQualifier
rff_TransportContractReferenceNumber = "AHI"
end enum
But I receive the error message "Compile Error, Type Mismatch" on the first
line of the enum declaration when I try to run the code...
Enum datatypes are mapped to LONG values, so you cannot use strings here.
Is enum the right approach here?
Depends on your needs:

public enum EnumReferenceQualifier
rff_TransportContractReferenceNumber
rff_ContainerPrefix
rff_VehicleIdentificationNumber
rff_TransportCostsReferenceNumber
rff_PersonalIdentityCardNumber
rff_FlatRackContainerBundleIdentificationNumber
rff_PlaceOfPositioningReference
rff_BillOfLadingNumber
rff_BookingReferenceNumber
rff_BlockstowReference
end enum

Public Function ReferenceQualifierToString( _
AReferenceQualifier As EnumReferenceQualifier _
) As String

Select Case AReferenceQualifier
Case Is = rff_TransportContractReferenceNumber
ReferenceQualifierToString = "AHI"
Case Is rff_ContainerPrefix
ReferenceQualifierToString = "AKB"
End Select

End Function

can do the job.

mfG
--> stefan <--
 
Stefan,

Thank you for your advice - the bit about enums only being applicable to
numeric datattypes escaped me!

Many thanks for your help.

Chris.
 
Back
Top