Hi i am trying to link graphical elements to the database using odbc connection.
Everything works fine in terms of text, but i need the level or colour of a specific element to go accross to the database and should change dynamically if i change a colour or level in the design.
Is this possible or not?
If so please explain
I am running microstation select series 2 on my pc
Hi,
from technical point of view I think it is possible to develop such solution, but in MDL/C++ and not in VBA. You have to track all changes that will be written to a design file and to write selected events into your database. My feeling is such solution will be fragile and possibly slow.
Can you describe what you want to achieve as your request is a bit unusual? May be another solution or workflow exists already.
With regards,
Jan
Bentley Accredited Developer: iTwin Platform - AssociateLabyrinth Technology | dev.notes() | cad.point
What I am trying to achieve is to have 4 different colours as circles for example in the design file. That must be written to a database and can be changed dynamically. Do you have any example files of writing levels or element colours to the database?
I think i confused you abit. I meant that the users will place the different graphic element colours(circle) on the design file where they see a problem. this should be written to a database. If there are any changes in the element colour it should change on the database as well. Is it easier to this via the GIS way that you mentioned?If so how do i go about doing it?
OK, now it is clear and much more simple :-)
I will try to repeat howyour application should look like:
Something like this can be simple or pretty complex and sophisticated application. In the simple form it can be developed in VBA in MicroStation, PowerDraft (or may be even in Bentley Navigator, but not quite sure about that :-).
There are plent of questions and issues crossing my mind related to such application, probably the most important is how to establish the connection between the particular circle mark and the database. You can use MicroStation DB linkage or you can design your system and to establish your connection, both have pros and cons. WIll be there more "marked design" connected to the database or only one design file will server as basic map for marking?
HTH Jan
Thank you for the quick response
I tried using the microstation db linkage but had no luck linking the level of the circle to the database.
If i could link the level to the database that would be great because i can change the level using the "verify linkage tool" in microstation and process the selected rows.
Can you help me with a detailed explanation on how do i go about doing this?
DB linkage (consisting from AE and mslink) is an optional feature of graphics elements. It means you cannot link a particular attribute of the element to the database, but only the element itself. The mslink points to the database row, table is defined by AE and mscatalog table. What you will store in the database is completely up to you, the only mandatory column is mslink.
So it is not possible to send the level through. What i have done is placed an orange circle and created a level called orange. I want that level or the colour to go across to the database.
It is still not quite clear what you want to do :-(
OK, you create an circle element (in fact an elipse looking like circle :-), that belongs to some level and has some color. You also create the level called "orange". Does the elipse belongs to this level? And the orange color is set as element color or the level color (so the circle color is set "by level")?
If you want to store the color of the circle, you can create DB record with the table with column "color". It is up to you / your application, that the element color will be read from element and filled in the DB row in the column "color".
If you want to store the color of the level, you has to do it by your own, it means to read this information from level definition and to store it in your database.
yes thats correct. I created the level called orange and set colour "bylevel" and then made the circle belong to the orange level. I want to write the level name to the database and dont have a clue how to. Do you have any example file that you could post to help me link up levels to the database?
Because you don't want to link elements to DB but only store you information into to, the problem is not related to MicroStation in fact. You should use standard VBA classes to connect to your DB and to store the informations. I am pretty sure if you will search Internet for "VBA connect SQL" you will receive plenty of examples.
VBA is a bit mean in terms of DB connection, but it can be done and the data can be stored/retrieved with standard SQL commands.
I wrote such macro in the past but unfortunately I am not able to find it (probably deleted after it was accepted by my customer :-).
ok thank you for the response.
Any idea how i can pickup the "level" from microstation and send throught to the database using vba connect sql?
Well ... I have ... find the appropriate level object, take the information you are interested in and store them in the table you will create in the database.
To be honest and open - I think it is time you should to decide if you know MicroStation VBA object model, VBA itself and database world enough (or you are willing to spend enough time and to learn it) or if it is easier to pay for the development.