desiredforsome
asked on
VB foreach query for string array
I am using the chilkat library for email and having some issues.
I am running a script htat is written in vb6/vba and i need it to check something.
The method is MSG.GetToAddr()
I want to load everything into a string array. Then foreach string in that array I want to run a set of commands to check. I am not running into any luck with the below code. I tkeeps giving me an error on the Next Itm.
I am running a script htat is written in vb6/vba and i need it to check something.
The method is MSG.GetToAddr()
I want to load everything into a string array. Then foreach string in that array I want to run a set of commands to check. I am not running into any luck with the below code. I tkeeps giving me an error on the Next Itm.
Sub Main()
Dim database As New ADODB.Connection
Dim records As New ADODB.Recordset
Dim sql As String
Dim phones As String
Dim numto As Long
numto=MSG.NumTo
Dim recip As Variant
On Error GoTo erl
database.ConnectionString="Provider=sqloledb; Data Source=192.168.2.121\EMMSDE;Initial Catalog=outlookreport; User Id=jsmith; Password=s5993153492;"
database.Open
If (numto > 0) Then
For i = 0 To numto - 1
recip = Array(MSG.GetToAddr(i))
For Each itm In Array(MSG.GetToAddr(i))
sql = "SELECT * FROM OUTLOOKREPORT.DBO.MFUSERS where username='" & recip & "'"
records.Open sql,database, adOpenForwardOnly, adLockReadOnly
If records.EOF=False Then
MSG.SaveEml("I:\Mail\" & MSG_UID & Format(Date,"yyyymmdd") & Format(Time,"hhmmss") & ".eml")
Email2DBAccept=False
Next itm
'This is where we conver to eml
'End Code on it
Call AddToLog("Message Posted to Online Portal")
Else
Email2DBAccept = True
End If
records.Close
database.Close
Exit Sub
Next
End If
'select the record we want
erl:
Call AddToLog("Script Errror: " & Err.Description)
End Sub
You don't say what the error is, but there is no 'End If' for the 'If records.EOF = False' line.
I can't say too much because I don't know what MSG.GetToAddr(i) is returning.
But what I can say is that I see at least one logic flaw...
Your logic appears to be trying to take an ARRAY object and do a for loop on each 'itm' inside the array. But in the sql loop, you're effectively using the whole array.
In other words... even though the following isn't valid VB syntax, the logic you have written is similar to this...
Dim txt as String
Dim ch as Charactor
txt = "ABCDEFG"
For each ch in txt
sql = "Select * from Table where Left(Field1,1) = txt
But what you really want is ...
sql = "Select * from Table where Left(Field1,1) = ch
But what I can say is that I see at least one logic flaw...
Your logic appears to be trying to take an ARRAY object and do a for loop on each 'itm' inside the array. But in the sql loop, you're effectively using the whole array.
In other words... even though the following isn't valid VB syntax, the logic you have written is similar to this...
Dim txt as String
Dim ch as Charactor
txt = "ABCDEFG"
For each ch in txt
sql = "Select * from Table where Left(Field1,1) = txt
But what you really want is ...
sql = "Select * from Table where Left(Field1,1) = ch
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.