Programmatically add an SSIS ForEachLoop - sql

How do you programmatically add an SSIS ForEachLoop?
We are limited to SQL Server 2005.
I'm having trouble adding the following properties:
ForEachEnumerator
CollectionEnumerator
Directory
FileNameRetrieval
FileSpec
Recurse
My code format looks like this:
Microsoft.SqlServer.Dts.Runtime.Executable executable = aSequence[0].Executables.Add("STOCK:ForEachLoop");
((Microsoft.SqlServer.Dts.Runtime.ForEachLoop) executable).Name = "a for each loop";
Thanks for any help in advance.

Please take a look at this MSDN sample
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.foreachloop.foreachenumerator.aspx
It configures For Each Item enumerator, but can be easily adoped for others

Related

Wrong "ReflectedWorkItemIDFieldName" while migrating Azure DevOps Work Items

I am testing the azure-devops-migration-tools and have create a project using https://azuredevopsdemogenerator.azurewebsites.net/ (Parts Unlimited). I have generated the configuration.json and changed the Source and Target so I can test a migration, but I'm getting errors while migrating Work Items.
[15:14:41 ERR] Error running query
Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException: TF51005: The query references a field that does not exist. The error is caused by «ReflectedWorkItemId».
I've tried different options on the "ReflectedWorkItemIDFieldName" field, Scrum, Basic, Agile, Custom, empty but am still unable to migrate the work items.
How can I get the value to put on this field for the specific project?
Thanks,
Bruno
Quick Solution: Most ADO instances use the prefix 'custom' for new fields. Try "Custom.ReflectedWorkItemId" in your configuration.json to see if that resolves the problem.
More details: It's hard to tell without an actual configuration.JSON file to review. One possible problem is that you need to use the actual and full internal 'Name' of the ReflectedWorkItemID field. This doesn't show in ADO, or the Process Template when created. The recommendation is that you create a query referencing your custom field, and export the WIQL file (query file). Once you export the WIQL file, you can then open the file and see the full syntax of the custom field.
Exporting Queries: If you don't know how to do this, it can be done with VisualStudio. If you don't know how to do that, you can install this extension. It's a handy WIQL import/Export and editor. Install, and your ADO Queries with have an Edit in WIQL Editor option. Create a query that exposes your 'ReflectedWorkItemID' as a column, then edit that query in the WIQL editor and see the full names of the Reflected Work Items ID Feild. https://marketplace.visualstudio.com/items?itemName=ottostreifel.wiql-editor
SELECT
[System.Id],
[System.WorkItemType],
[System.Title],
[System.AssignedTo],
[System.ChangedBy],
[Custom.ReflectedWorkItemId]
FROM workitems
WHERE ...
I found a possible solution. I have created a custom process, change the process from the projects to this new one and add a new field. This is the field I'm using on the configuration.json and now I'm able to migrate work items
To make the migration in the "ReflectedWorkItemIDFieldName" you must do:
"Organization Settings" -> Process -> Select the process where you project are (Basic, Scrum, Agil, or CMMI).
then click on the 3 dots and create a new Inherited process.
Then with the inherited process, you are able to create a new field for each work item type. The name that you type (could be "IronMan") that name will be in your configuration file.

Reading Images, Pdf from SQL Database via LINQPad

I have a table in a database that contains all kind of attachments, images, pdf, excel, and other formats. creating an application is not an option, so I googled other options and I found this related question that mentioned LINQPad I downloaded it but I still do not know how exactly it works. Anyone please explain that to me? I can query the attachments using sql query but not sure how to dump them and preview them via the mentioned tools.
Following on from Dan's answer, once you have the data context set up you can dump the images from the database. I use this snippet for checking an image I've written to the database, you should be able to edit as required to match your scenario:-
var ii = ItemImages.Where (v => v.Id == 10).FirstOrDefault();
using (var ms = new MemoryStream(ii.Image.ToArray()))
{
System.Drawing.Image.FromStream(ms).Dump();
}
Use the Util.Image built in utility for images.
Ex:
var personPictures = PictureTable.Take(1);
Util.Image(personPictures.First().Picture).Dump();
Util.Image takes a byte array.
Depending on your database of your choice, most likely you'll need a data context driver
http://www.linqpad.net/richclient/datacontextdrivers.aspx
Once you establish a connection you can start writing queries against the data

Call a data from a database in a .ini file

I have a little problem about my .ini file. I am using LabVIEW to pilot a Power Supply GPD-2303. And I have to configure the Voltage and the Current searched for each cards. These datas are in a Database but I have only a read access on it.
Voltage, Name, AlphaNumCode... Are not a problem because it will probably never change so my code is looking like:
[AlphaNumCode]
VSET_1=VALUE
VSET_2=VALUE
CSET_1=VALUE
CSET_2=VALUE
Assembly_PN=VALUE
That's to set Voltage, Current at the start of the execution on LabVIEW and give an Assembly PN "IF KQG then AssemblyPN= 1633".
That's the situation. The problem is there:
[Assembly PN]
CURRENT1_PROG_SEARCHED=VALUE
CURRENT2_PROG_SEARCHED=VALUE
CURRENT1_BLANK_SEARCHED=VALUE
CURRENT2_BLANK_SEARCHED=VALUE
I want to transform it, because if this value is not a fix value. I am looking for Something like:
[Assembly PN]
CURRENT1_PROG_SEARCHED="VALUE IN COLON W, LINE X"
CURRENT1_PROG_SEARCHED="VALUE IN COLON W, LINE X"
CURRENT2_PROG_SEARCHED="VALUE IN COLON X, LINE X"
CURRENT1_BLANK_SEARCHED="VALUE IN COLON Y, LINE X"
CURRENT2_BLANK_SEARCHED="VALUE IN COLON Z, LINE X"
I have found: https://support.microsoft.com/en-us/kb/149090
But it show how to interact with the colon but not with a specific case. Is there a command?
That's the last thing I have to do in my Internship to end this project and I do not like let things unfinished.
Hope someone can help me or give me documents to learn how to do it, it will be great :)
Edit:
Yes, this article show how to access data by a text file, and the text file is linked to the data in the database, I was thinking that could work.
I am clearly new about database so I am sorry about the lack of knowledge I will try to do my best, but using SQL server and System DSN to Access it in LabVIEW.
The ini File is read in a LabVIEW Program
By"COLON" I mean "COLUMN
Edit:
I send you my Sub VI and a picture of my code, that's what I want. still having 2 days to end it so I hope you can read me guys!
[1630]LINE=WHERE (OC=1630);
[1631]LINE=WHERE (OC=1631);
[1632]LINE=WHERE (OC=1632);
[1633]LINE=WHERE (OC=1633);
[1635]LINE=WHERE (OC=1635);
LabVIEW Picture of the Sub VI 25/07/16 using DB Select Tool Kit
Best regards,
Robin.
I have found a solution, in fact I am using a .ini file to send a condition:
Just to know: (OC = Assembly Number)
In my .ini I have:
[1633]
OC=WHERE(OC=1633);
Then I send it to the condition in DB Select Tool Kit and I enter the column / table where is the data I am looking for.
Then if a new card need to be test they just need to make a new line in the .ini file:
[XXXX]
OC=WHERE(OC=XXXX);
Thanks for your help that problem is resolve, I hope it can help someone that want to make communication between LabVIEW / .ini / Database
Best regards,
Robin

Maximo - Adding elements to a CustomMboSet using scripting

Is it possible to add to a CustomMboSet in Maximo using scripting? I am writing a custom application using a custom object called TIMESHEET. As part of the application I am writing a (Jython) script that needs to dynamically build up an MboSet (a set of TIMESHEETs). The code retrieves an existing CustomMboSet and attempts to add elements to it. It works when using an out of box MboSet, but when I try to run the same code on a custom MboSet it does not seem to work. No error is thrown, but code below the offending line is not run.
In other words, this works (LABTRANS is an out of box MBO):
myMboSet = mbo.getMboSet("LABTRANS")
newMbo = myMboSet.add()
# Set attributes on newMbo, everything is happy
But this does not (TIMESHEET is a custom MBO):
myMboSet = mbo.getMboSet("TIMESHEET")
newMbo = myMboSet.add()
# Code does not execute after the above line
Anyone have any insight as to why I am seeing this behavior? Does the Maximo scripting framework simply not support the dynamic building up of CustomMboSets? Any help is appreciated. Thanks.
You need to make sure that the relationship exists between the Current MBO and the Custom MBO in the database configuration otherwise it will not work.
Alternatively you can use the following code to create an new mboSet on the fly:
timeSheetMboSet = mxServer.getMboSet("TIMESHEET", userInfo)
mbo.getMboSet(RELATIONSHIPNAME).
LABTRANS and TIMESHEET must be the relationship names to the object in auto script.
If you want to get/add records in any object, use
mxServer.getMboSet(OBJECTNAME, userInfo)
A bit more explanation. You can create your own custom relationship from within your automation script. The trick is to make sure it's not already existing. That's why I use a dollar sign for mine.
variable = mbo.getMboSet(tempRelationshipName,Object,where clause)
previousPhaseSet = mbo.getMboSet("$wophasetranstemp1", "exitdate is null")

MSbuild built in variables

Could someone translate this, into a syntax that uses the built in variables?
\\myserver\builds\mybuild\Daily_20090525.1\Release\_PublishedWebsites\myWebsite
it should be something like:
$(DropLocation)\mybuild\$(?...)\Release\_PublishedWebsites\myWebsite
This might help:
substitute "mybuild\$(?...)" with "$(BuildNumber)"
I had a similar problem where I was trying to copy from the drop location to a "Latest" folder. I found that to construct the final destination of the files (\MyServer\MyShare\builds\MyBuild\Daily_20090708.14\Mixed Platforms\Release) translated to the following using variables:
$(DropLocation)\$(BuildNumber)\%(ConfigurationToBuild.PlatformToBuild)\%(ConfigurationToBuild.FlavorToBuild)
I also found it helpful to use the Message task for troubleshooting. The following task will tell you what the variable translate to.
<Message Text="$(DropLocation)\$(BuildNumber)\%(ConfigurationToBuild.PlatformToBuild)\%(ConfigurationToBuild.FlavorToBuild)\"/>
To see the output, look in BuildLog.txt.
PS: My tasks that used the properties and items mentioned above where located inside <Target Name="AfterDropBuild">.