VB programming

Can anybody suggest any third party Project Management Tool which can be used as Project 2000.
I would like to have any API or DLL for this tool in VB program.
We are trying to use this any such tool to create task, for managing resources also it should have gantt chart functinality.

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

There is a very very good and flexible control from DBI Technologies called Solutions::Schedule. I have been using it for over two years as a Gantt project viewer and updater and it works really fine and has a lot of features that make it very effective for you as developer and for the users of your application. Check out http://www.dbi-tech.com

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
You can try the tools from Infragistics call WinSchedule


Sam Tan
amiteshsinhaAuthor Commented:
Thanks a lot.
I tried  Solutions::Schedule. Its really good.
amiteshsinhaAuthor Commented:
I am trying to use Solutions::Schedule tool.
pamartz  , can you send me some sample code to create a schedule. I am trying to user this OCX for creating Construction schedule and generate gantt chart using that schedule.

Thanks In advance.
Hi amiteshsinha and thanks for your acceptance !

The next piece of code, extracted from a real working app, shows how you can populate the Control from a recordset, adding a "barcargo" property for each time bar so that you can later access the element referenced by the time bar.
This is being used in a maintenance task planning application, in which we are representing each due date for a task with one time bar which represents one day.

Note: "Plan" is the name of my Solutions::Schedule control in the form.

' This is the function that loads Scheduling information from a recordset.
' For each equipment, all its scheduled tasks are shown in the same line, represented by time bars.
Private Function CargarPlanLista() As Boolean
   Dim iCo As Integer, s As String, Rs As ADODB.Recordset, hs As mHisManS
   Dim Nus As String, nSec As String, Fec As String, h As mHisMan, His As String
   Dim MarAnt As String, n As Integer, iBar As Long, iPer As Integer
   On Error GoTo NOVA
   s = MakeSQL()
   Set Rs = New ADODB.Recordset
   Rs.Open s, Cnx ' Cnx is a previously open connection
   SoyYo = True
   Do While Not Rs.EOF
      If Rs!MFunc <> MarAnt Then ' Equipment is different from previous one so make new line.
         s = ""
         s = s & Trim("" & Rs!MFunc) & ";"
         s = s & Trim("" & Rs!Descr) & ";"
         s = s & Trim("" & Rs!CodNUS) & ";"
         s = s & Trim("" & Rs!CodApl) & ";"
         iCo = Plan.AddItem(s)
         Plan.ListCargo(iCo) = Trim("" & Rs!MFunc)
         MarAnt = Rs!MFunc
      End If
     ' Note in next sentence that we are setting identical StartDate and EndDate for each task.
      iBar = Plan.AddTimeBar(iCo, 180, 1320, CDatePLAN(Rs!Fecha), CDatePLAN(Rs!Fecha))
      Nus = Trim("" & Rs!CodNUS)
      Fec = Format("" & Rs!Fecha, gMasDM4A)
      His = Trim("" & Rs!HistoriaSN)
      If IsNull(Rs!NSecu) Then nSec = 0 Else nSec = Format(Rs!NSecu, gMas0D)
      s = ""
      s = s & Trim("" & Rs!MFunc) & vbTab                'equipment code
      s = s & Trim("" & Rs!CodTar) & vbTab               'task code
      s = s & Fec & vbTab                                'date
      s = s & Trim("" & Rs!DescTar) & vbTab              'task description
      s = s & Trim(Rs!Estado) & vbTab                    'task status
      s = s & His & vbTab                                'subject to equipment history
      s = s & Nus & vbTab                                'NUS
      s = s & nSec & vbTab                               'Sequential no.
      ' Plan.BarCargo is very important: it is used later in the app to take further actions when the users moves, clicks or double-clicks a bar (ie. a task)
     ' In Plan.BarCargo we place for each time bar all the information that we need in order to refer to the task later.
      Plan.BarCargo(iCo, iBar) = s
      Select Case Rs!Estado  ' Depending on task status we set the bar's style.
         Case "P": n = 1
         Case "F": n = 2
         Case "E": n = 3
         Case "D": n = 4
      End Select
      Plan.BarStyle(iCo, iBar) = n
      Plan.BarText(iCo, iBar) = " " & Trim("" & Rs!MRC) & " "
      Plan.BarTextAlign(iCo, iBar) = 3
   Rs.Close: Set Rs = Nothing
   SoyYo = False
  ' CargarPeriodos() is a function that colors the background of the "Plan" control in different ways depending on the operational status of the equipments. I won't include it here so as not to make this answer too long. You can comment it out and I suppose everything else will work.
   If Not CargarPeriodos() Then GoTo NOVA
   CargarPlanLista = True
   Plan.ListIndex = 1
   Exit Function
   CargarPlanLista = False
   If Screen.MousePointer = vbHourglass Then Screen.MousePointer = vbDefault
   MsgBox Error$
   End Function   'CargarPlanLista

Private Sub InitializePlan()
   With Plan
   .UseImageList = False
   .DateFormat = "M/Y"
   .TimeType = TimeDays
   .DateOffset = 2
   .RulerDays = False
   .BackColor = vbWindowBackground
   .BarSelectBorder = BarSelectRaised
   .SelectForeColor = vbHighlightText
   .SelectBackColor = vbHighlight
   .BarTextWrap = True
   .VertReposition = False
   .BarSelectBorder = BarSelectRaised
   .BarTipSize = 0
   ''' Scope of the Plan.
   ' dtpFecIni and dtpFecFin are two DatePicker controls in which the users chooses the initial and ending date that he wants to see.
   .DateStart = CDatePLAN(dtpFecIni.Value)
   .DateEnd = CDatePLAN(dtpFecFin.Value)
   .SnapToGrid = True
   .GridFrequency = 1
   ''' Title for the List part of the control
   .TitleText = "F. Code;Description;NUS;APL"
   .TitleAlign = AlignLeft
   .TitleFont = "Verdana"
   .TitleYOffset = 5
   .TitleHeight = 30
   .ListWidth = 90
   .ListColumns = 4
   .ColumnWidth(1) = 60
   .ColumnWidth(2) = 350
   .ColumnWidth(3) = 50
   .ColumnWidth(4) = 120
   .ListWidth = 60
   .DisplayOnly = False
   End With
   End Sub 'InitializePlan

Private Sub LoadStyles()
' There are in my case four bar styles representing the status of the tasks:
   Dim i As Integer
   With Plan
      i = .AddBarStyle(18, 0)     'Pending task
      .StyleBackColor(i) = vbGreen
      .StyleTextXOffset(i) = 2
      .StyleEndYOffset(i) = 6
      i = .AddBarStyle(18, 0)     'Deferred task
      .StyleBackColor(i) = vbCyan
      .StyleTextXOffset(i) = 2
      .StyleEndYOffset(i) = 6
      i = .AddBarStyle(18, 0)     'Executed task
      .StyleBackColor(i) = vbBlue
      .StyleTextXOffset(i) = 2
      .StyleEndYOffset(i) = 6
      i = .AddBarStyle(18, 0)     'Discarded task
      .StyleBackColor(i) = vbRed
      .StyleTextXOffset(i) = 2
      .StyleEndYOffset(i) = 6
   End With
   End Sub

' next Function formats a date so as it is accepted by the Control (change to Long).
Public Function CDatePLAN(F As Variant) As Long
Dim F1 As Date, F2 As Date
F1 = CDate("01/01/1900")
F2 = CDate(F)
CDatePLAN = (DateDiff("d", F1, F2) + 2)
End Function

' Next Function makes up the SQL statement. I'll abbreviate it, but in real app it is dependent on some selection filters.

Private Function MakeSQL() As String
   Dim s As String
   s = ""
   s = s & "SELECT a.MFunc, b.Descr, b.CodNUS, a.NSecu, b.CodApl, "
   s = s & "c.CodTar, c.Descr as DescTar, c.MRC, a.Fecha, "
   s = s & "a.Estado, b.HistoriaSN "
   s = s & "FROM tblScheduledTasks a left join tblEquiments b on "
   s = s & "a.CBuq = b.CBuq and a.MFunc = b.MFunc "
   s = s & "left join tblTaskDefinitions c on "
   s = s & "b.CodApl = c.CodApl and a.CodTar = c.CodTar "
   s = s & "WHERE "
   s = s & "a.CBuq = " & SBDNoNulo(gCBuq) & " and "
   s = s & "a.MFunc LIKE " & SBDNoNulo(Trim(txtMFunc) & "%") & " and "
   s = s & "a.Fecha >= " & FBDNoNulo(dtpFecIni.Value) & " and "
   s = s & "a.Fecha <= " & FBDNoNulo(dtpFecFin.Value) & " "
   s = s & "order by a.MFunc, a.CodTar"
   MakeSQL = s
   End Function   'MakeSQL

Well, was long but I hope it helps.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.