ERWIN and Access

Posted on 1998-12-17
Last Modified: 2013-12-25
Hi all,

I have one script genereted by Erwin. But there are one "command" **SetFieldProp** that VB5 don't know.
Does someone know the equivalent command in VB5? Or another one solution to run this script to generate one Access DB?
I hope to be clear.

Question by:sergio_2001
  • 5
  • 2
LVL 15

Accepted Solution

ameba earned 50 total points
ID: 1498360
I am not using Erwin at a moment, not sure how your script looks like, but:
In VB5 you can add properties to the field definition:

E.g. If you have to set a property:
VALMSG "This ID does not exist!"

' you should do this
With gtdfTableDef.Fields(fldName)
   .Properties.Append .CreateProperty("VALMSG", dbText, "This ID does not exist!")
End With

You cannot do this in the moment of field creation, but after it exists.
So, you cannot:
  'get a fresh field object
  Set fld = gtdfTableDef.CreateField()
  'fill the field structure
  With fld
    .Name = ...
    .Size = ...
    .Properties.Append ... ' error invalid operation
  End With
Instead, you must do it in the second 'pass'.

To set existing property, use:
 gtdfTableDef.Fields(fldName).Properties("VALMSG").Value = "This ID does not exist!"

See also:
CreateProperty, Properties Collection, in VB Help

Author Comment

ID: 1498361
Hi ameba,

I'm sending one part of the code. Since I'm not one VB programmer it's not too easy analize your answer. I'm using VB just to generate the database.

'  CREATE TABLE "cores"
Set ERwinTableDef = ERwinDatabase.CreateTableDef("cores")
Set ERwinField = ERwinTableDef.CreateField("cd_cor", DB_INTEGER)
ERwinField.Required = True
ERwinTableDef.Fields.Append ERwinField
Set ERwinField = ERwinTableDef.CreateField("ds_cor_abrev", DB_TEXT, 15)
ERwinTableDef.Fields.Append ERwinField
Set ERwinField = ERwinTableDef.CreateField("ds_cor", DB_TEXT, 36)
ERwinTableDef.Fields.Append ERwinField
ERwinDatabase.TableDefs.Append ERwinTableDef
Set ERwinField = ERwinTableDef.Fields("cd_cor")
SetFieldProp (ERwinField, "Caption", DB_TEXT, "Cód Cor:")
Set ERwinField = ERwinTableDef.Fields("ds_cor_abrev")
SetFieldProp (ERwinField, "Caption", DB_TEXT, "Desc. Cor Abreviado:")
Set ERwinField = ERwinTableDef.Fields("ds_cor")
SetFieldProp (ERwinField, "Caption", DB_TEXT, "Desc. Cor:")
LVL 15

Expert Comment

ID: 1498362
' add this sub to your module
Sub SetFieldProp(fld As Field, pName As String, pType As Integer, pValue As String)
    On Error GoTo propError
    ' append property
    With fld
        .Properties.Append .CreateProperty(pName, pType, pValue)
    End With
    Exit Sub

    ' probably error is: 3367, Can't append.  An object with that name already exists
    On Error GoTo othererr
    ' perhaps property exists, so just set value
    fld.Properties(pName).Value = pValue
    Exit Sub
    Debug.Print "Err: " & Err.Number & ", " & Err.Description
    Exit Sub
End Sub

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

LVL 15

Expert Comment

ID: 1498363
Call SetFieldProp (ERwinField, "Caption", DB_TEXT, "Desc. Cor:")
SetFieldProp ERwinField, "Caption", DB_TEXT, "Desc. Cor:"
' note this is without parens()

LVL 15

Expert Comment

ID: 1498364
You will perhaps have some more errors. I remember it was a lot of trials converting to .Mdb
Be sure to remove all locale characters from script(šðÈÆŽ)
LVL 15

Expert Comment

ID: 1498365
Small correction:
Replace last argument
   ..., pValue As String)
   ..., pValue As Variant)

so it will accept other property types, not only strings

Author Comment

ID: 1498366
Hi ameba,

The code was compiled folowing your tip without errors. But I didn't saw the result yet within Access. I suppose will be all right.


Featured Post

Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question