From what you say, your raw data is batch based, not time-based. You have a time stamp for each sample group, but you don't use it. You simulate a time stamp, incrementing it a minute for each sample group. Correct me if I'm wrong.
Are you using a SPCTimeVariableControlChart or a SPCBatchVariableControlChart? Since your data does not have a uniform sample interval, it seems you should be using a SPCBatchVariableControlChart. That way you would not have to simulate a fake time time stamp for your samples, and instead can use a batch number and the actual time stamp.
Your loop code looks wrong and we can't say why it would work. You seem to be increasing the size of the dCurrentValue array with every interation of the loop. Below, we create a new one for every update in the loop, dimension 1, and use that in the call to AddNewSampleRecord.
It seems to us that it ought to look like:
dValues() As Double 'a previously sized array passed into the function containing all individual samples from the SQL database
For i = 0 To (m_NumberOfDataPoints - 1)
Dim timestamp As ChartCalendar = CType(m_StartTime.Clone(), ChartCalendar)
Dim n_dCurrentValue As New DoubleArray(1) 'the interface type to the QC library
n_dCurrentValue(0) = dValues(i)
Me.ChartData.AddNewSampleRecord(timestamp, n_dCurrentValue)
m_StartTime.Add(ChartObj.MINUTE, m_iTimeIncrementMinutes)
Next