Importing multiple text files programmatically

  • Thread starter Thread starter Toby
  • Start date Start date
T

Toby

I use a command button to import a local delimited text
file into a table. What I need to do is a search through a
folder to see if any new text files exist and if they do
then import them into my Access Database as I am doing
now, but I don't know how to accomplish this or where to
begin looking (there is so much info out there.
I also face the problem of primary keys. See when I click
the button to import the file after already having done
so, I will get a message about primary keys and blah blah
then I have the option to continue or cancel and of course
I click continue. It doesn't overwrite any information,
but I need it to do this because the text file gets added
data daily, but I don't want the user to have to see this
message everytime they import data.
If you feel there is a simpler way to get data into my
database besides importing delimited text files feel free
to share, (aka XML or something). I also thought of just
linking the data but since I need to check multiple files
I figured Importing data from multiple files is easier
than trying to link to many.
 
Hi,

As you mentioned there are many options for how to handle
this. And, without knowing more about your process it's
hard to say what would be best. But, to answer your
first question, yes it is possible to search a file to
see if new text files exist. You can search folders
using Application.Filesearch (you can find help in the VB
help section). But, in order to see if the files have
been imported before you would also have to log the
filenames in a table as they are imported so that you
would know not to import them in the future.

I have done something somewhat similar in the past. If
you decide to do this, I can post some sample code that
wouldn't be too difficult to modify. Or, maybe someone
else will have a better way of doing what you want to do.

-Ted
 
Hi Ted and thanks for a quick response. I would love to
take a look at some of your code and see if I can put it
to use. I would greatly appreciate it.
Thanks

-Toby
 
I need to do the same thing, but with .xls files instead! Hehe. I will be watching you both very closely so no sudden moves! But honestly... I need to do this, and I am surprised to find out that I will need to "validate" against already imported files. This is something I did not think of. Is there a shortcut to simply search the directory, and create one table with compiled (or appended) data from say 100 files? hehe. Ok I will butt out of Toby's issue... perhaps I have opened up thought

Thanks!
 
I was able to search through a folder for files using the
code below. Now my problem is the files are on a web
server, is there any way to search that. I tried modifying
..LookIn = "http://www.nameofserver.com/foldertosearch
but that doesn't seem to work. One prob solved, new one
encountered.

Private Sub cmdSearch_Click()
'Declare a variable to act as a generic counter.
Dim lngCount As Long

'Use a With...End With block to reference the
'FileSearch object.
With Application.FileSearch

'Clear all the parameters of the previous searches.
'This method doesn't clear the LookIn property or
'the SearchFolders collection.
.NewSearch
.FileType = msoFileTypeAllFiles
'Use this is you have a specific file type
.FileName = "*.*"
'Use this for excel
.FileTypes.Add msoFileTypeExcelWorkbooks

'Set up the search to look in all subfolders
.LookIn = "C:\foldertosearch"
.SearchSubFolders = True

'Execute the search and test to see if any files
'were found.
If .Execute <> 0 Then

'Display the number of files found.
MsgBox "Files found: " & .FoundFiles.Count

'Loop through the list of found files and
'display the path of each one in a message box.
For lngCount = 1 To .FoundFiles.Count
If MsgBox(.FoundFiles.Item(lngCount),
vbOKCancel, _
"Found files") = vbCancel Then

'Break out of the loop
lngCount = .FoundFiles.Count

End If
Next lngCount
Else
MsgBox "No files found."
End If
End With
End Sub
 
Hi Toby (and Jason)

Listed below is a procedure that I use to automatically
locate the most recent download in a folder, copy to
another folder, then run a macro to import. This
wouldn't do exactly what either one of you are looking
for, but it may give you some ideas. For example, in
your case, you would probably want to have a transfertext
statement inside the loop working with the files that
were found.

I will also post a procedure I use to loop through the
files in a project folder to add hyperlinks, it may give
you a few more ideas as far as looping through files in a
folder. Following is the code, (keep in mind that the
wrapping may create problems when copying and pasting, so
you may need to do some cleaning up in VB if pasting
certain portions):

Private Sub Command0_Click()
Dim PathAndFileName As String, HighPathAndFileName As
String, DateString As String, DateStrMax As String
Dim PrevFile As String, Msgtest As String, MeDbase As
Database, RStemp As Recordset

'Set the fs variable to stand for Application.Filesearch
Set fs = Application.FileSearch
' With Application Filesearch
With fs
'Assign the folder to look in
.lookin = "\\82cvcfs1\FMD\CIP\WCIP\CIP212 Reports"
'Assign the search string
.FileName = "cip212rpt*"
'If files are found, sort them in ascending order
If .Execute(SortBy:=msoSortbyFileName,
SortOrder:=msoSortOrderAscending) > 0 Then
'MsgBox "There were " & .foundfiles.Count & "file
(s) found." ' This is just a debugging statement
'Assign the first filename (File 1) to the
variable HighPathAndFileName
HighPathAndFileName = .FoundFiles(1)
'Assign the right 14 characters from
HighPathAndFileName (File 1) to DateStringMax.
'Note that filenames use the
convention "cip212rpt 2003-12-01.txt", so the right 14
characters
'would give "2003-12-01.txt", which will be used
to determine the latest download file by looking
'for the maximum value
DateStringMax = Right(HighPathAndFileName, 14)
'For each file (i) in the folder
For i = 1 To .FoundFiles.Count
'Assign the path and filename of file i to
the variable PathAndFileName
PathAndFileName = .FoundFiles(i)
'Assign the right 14 characters from
PathAndFileName to DateString
DateString = Right(PathAndFileName, 14)
'If DateString > DateStringMax, File i is
later than the latest value previously encountered.
If DateString > DateStringMax Then
'Then assign DateStringMax = DateString
(store File i as the latest Filename).
DateStringMax = DateString
'And assign HighPathAndFileName =
PathAndFileName (store path/file i as highest
path/filename).
HighPathAndFileName = PathAndFileName
End If
'MsgBox .foundfiles(i) ' Again, a debugging
line - normally rem'd out
'Loop to next PathAndFileName to look for later
file until done with all files
Next i
'Import history is stored in the table
tCIP212ImportHistory, this line looks for the latest
'download filename and assigns it to the variable
PrevFile
PrevFile = DMax
("CIP212Filename", "tCIP212ImportHistory")
'construct a message box message to let the user
know what the latest download file is,
'compared to the previous download, and ask if
they want to import - this gives them a way
'to opt out if the latest download is already in
the database
msgtext = "The last file imported was " &
PrevFile & ", would you like to import the file " & Right
(HighPathAndFileName, 24)
'Display message box displaying previous/current
download files and ask whether to proceed.
'Store response in the variable "response"
response = MsgBox(msgtext, vbYesNo)
'If the user responds that they would like to
proceed, then
If response = vbYes Then
'Copy latest download file (stored in
HighPathAndFileName) to the Database\Downloads\WCIP
folder.
FileCopy HighPathAndFileName, "\\82cvcfs1
\FMD\CIP\Database\Data Downloads\WCIP\cip212rpt.txt"
'Run Import and Update Macro
DoCmd.RunMacro ("m Update Account Status")
'Add The Imported Filename to the t CIP212
Import History table
'Set the variable MeDbase to represent the
current database
Set MeDbase = CurrentDb
'Set the RStemp variable to represent a
recordset defined as the tCIP212ImportHistory table in
the current database
Set RStemp = MeDbase.OpenRecordset
("tCIP212ImportHistory")
'With the RStemp recordset
With RStemp
'Add a new record
.AddNew
'Enter the right 24 characters from the
HighPathAndFileName into the CIP212Filename field
'in the recordset
!CIP212Filename = Right
(HighPathAndFileName, 24)
'Enter the current date/time in the
Entered field of the recordset
!Entered = Now()
'Post the entries
.Update
'Close the recordset
.Close
'End With RStemp recordset
End With
'If the user does not respond that they would
like to import the file
Else
'End the procedure
End
'End If Statement (regarding user response)
End If
'Else - If no files were found
Else
'Notify the User
MsgBox "There were no files found."
'End If statement (regarding whether files were
found).
End If
'End With Application.FileSearch
End With

End Sub
 
Here is another procedure that works with files in
folders. Also, Jason, regarding your question about
having to validate files, that would only be necessary if
you are trying to keep track of which files have been
imported and which have not. If you just want to import
or link all files, it wouldn't be necessary.

Following is a procedure that I use to add hyperlinks for
users automatically. It isn't related to
importing/linking files, but gives another example of
looping through files in a folder.

'This module is designed to automatically add hyperlinks
to files that are stored in the project folder
'but not yet linked to the database.

'Project folders are stored under \Doclinks\WCIP.
Beneath that folder, there are folders that contain
'groups of 50 project folders. For example "00001 to
00050".

'Within each group folder, there are 50 individual
folders named simply according to the 5-digit project ID.
'For example "00001"

'Project numbers are always in 5-digit format for naming
consistency.

'Within each project folder, individual files are
supposed to be named using the following format:
'#####_YY-MM-DD_#.*, where the first 5 numbers are
the Project ID, then the date, then a serial number
'(to allow for more than one document per day). Of
course each file keeps the extension of the associated
'application.

'Check to see if the user has clicked on a blank field.
If not, exit the sub
'This sub is designed to only run when the user clicks on
a blank field.

If IsNull(Me.Doc_Hyperlink) = False Then
Exit Sub
End If

'Dimension a variable to receive the currently selected
Project ID (if there is one), one to construct a string
'to prompt a user for confirmation, and one to store the
users response
'Other variables are dimensioned after checking to see if
code will progress.
Dim intEmployeeID As Integer, strMessage As String,
intUserResponse As Integer

'Check to see if an employee name has been chosen
'This sub is designed to run only after an employee name
has been chosen so that the name can be assigned
'to all of the new links that will be created.
If IsNull(Me.Employee_ID_Link) Then
'If an employee name has not been selected, notify
the user and exit the sub.
MsgBox "Please select your name to the right to enter
new hyperlink(s)"
Exit Sub
Else
'If an employee name is selected, assign the ID to
the intEmployeeID variable
intEmployeeID = Me.Employee_ID_Link
End If

'Construct a message to ask the user if they want the
unlinked documents to be automatically linked

'First part of string
strMessage = "Click YES if you would like to
automatically add links to all unlinked "
'Additional text and a blank line
strMessage = strMessage & "documents in the folder for
this project." & Chr(13) & Chr(10) & Chr(10)
'Additional text
strMessage = strMessage & "Otherwise, click NO to
manually add a link."

'Display message box with the constructed string,
show "Yes" and "No" buttons, title the dialog with
'"Automatically Add Links?", and assign the users
response to the intUserResponse variable
intUserResponse = MsgBox(strMessage,
vbYesNo, "Automatically Add Links?")

'Check to see if the user responded "No", which would
mean that they don't want to automatically link the files
If intUserResponse = vbNo Then
'If the user answered "No" exit the procedure.
Exit Sub
End If


'At this point, code will progress to the end, so the
remaining variables are dimensioned
Dim strInitialFolder As String, fs, intRelPathFileLen As
Integer
Dim strProjID As String, lngProjID As Long, strLBNumber
As String, strUBNumber As String
Dim dbs As Database, qdef As QueryDef, rstDocLinks As
Recordset
Dim blnFound As Boolean, intCountAdds As Integer

'In order to get to this point, the user had to select an
Employee Name, and then click in a blank hyperlink
'field. This means that there is currently a record in
the form that is in edit mode.

'But, now that the selected Employee ID has been
captured, and it has been determined that all
'unlinked documents will be linked in the remaining part
of this procedure, it is necessary to cancel out
'the partial entry of the new record in the form

'Undo the pending entry in the form.
Me.Undo

'Capture the Project ID as a long integer and assign it
to the lngProjID variable.
'It is necessary to get this off of the parent form (f
Master) because there may not be any entries in the
subform
lngProjID = Me.Parent.ID
'Construct the 5-digit ID for the project and assign it
to a string variable titled strProjID.
'This is done by adding four leading zero's to the ID,
then trimming the right 5 characters.
strProjID = Right("0000" & Me.Parent.ID, 5)

'Next, in order to construct the name of the parent
folder to the project folder, it is necessary to construct
'the lower and upper bound numbers of the parent.

'For the Lower Bound number, divide the project ID by 50,
round off to an integer, then multiply by 50
'and finally add 1 to the result. Then append the result
to four 0's, and trim the right 5 characters.
'For example, if Proj ID = 238, divide by 50 and round
off = 4, multiply by 50 = 200, add 1 = 201,
'append to four 0's = 0000201, take right five characters
= 00201
strLBNumber = Right("0000" & (Int((Me.Parent.ID - 1) /
50) * 50) + 1, 5)
'For the Upper Bound number, divide the project ID by 50,
round off to an integer, add 1, then multiply by 50.
'Then append the result to four 0's, and trim the right 5
characters.
'For example, if Proj ID = 238, divide by 50 and round
off = 4, add 1 = 5, multiply by 50 = 250,
'append to four 0's = 0000250, take right five characters
= 00250
strUBNumber = Right("0000" & (Int((Me.Parent.ID - 1) /
50) + 1) * 50, 5)

'Now, begin to construct the full file path by starting
with the portion of the path that is constant and
'assigning it to the strInitialFolder string variable.
strInitialFolder = "\\82cvcfs1
\fmd\CIP\Database\Doclinks\WCIP\"

'Append the Lower Bound number, a space, the word "to",
another space, the Upper Bound number,
'a slash, and the 5 digit project ID string.
'For the earlier sample (project 238), this would equate
to:
'\\82cvcfs1\fmd\CIP\Database\Doclinks\WCIP\00201 to 00250
\00238\
strInitialFolder = strInitialFolder & strLBNumber & "
to " & strUBNumber & "\" & strProjID & "\"

'Initialize to 0 the variable that will be used to count
how many doclinks get added by this procedure
intCountAdds = 0

'Assign the variable fs to represent
Application.Filesearch
Set fs = Application.FileSearch

'With Application.Filesearch do the following
With fs
'Set the folder to the variable strInitialFolder,
which was constructed earlier to represent the project
folder.
.lookin = strInitialFolder
'Set the filetype to find all file types
.FileType = msoFileTypeAllFiles
'.FileTypes.Add msoFileTypeAllFiles
'Set the file name criteria to find all file names
.FileName = "*.*"
'If any files are found
If .Execute() > 0 Then
'Assign the variable dbs to represent the current
database
Set dbs = CurrentDb
'Assign the variable qdef to represent the
query "q DocHyperlinks" within the current database.
Set qdef = dbs.QueryDefs("q DocHyperlinks")
'Set the [EnterProjID] parameter equal to the
current project ID. This will limit the recordset
'to only the records matching this project.
qdef.Parameters("EnterProjID") = lngProjID

'Open a recordset using the qdef query definition
as a dynaset type
Set rstDocLinks = qdef.OpenRecordset
(dbOpenDynaset)

'Do the following loop for each file found in the
project folder
For i = 1 To .FoundFiles.Count
'Extract just the relative portion of the
path and the filename by subtracting the constant
'"\\82cvcfs1\fmd\CIP\Database\Doclinks\WCIP\"
which is 42 characters

'First, find the total lenght of the path and
file name and subtract 42 to find
'the size to be extracted and assign the
result to the intRelPathFileLen variable
intRelPathFileLen = Len(.FoundFiles(i)) - 42

'Now, extract that number of characters from
the right side of the full path to get the relative
'path and filename. Assign the result to the
strRelPathFile variable.
strRelPathFile = Right(.FoundFiles(i),
intRelPathFileLen)

'With the rstDocLinks recordset (created
earlier from the query definition)
With rstDocLinks
'Move to the first record
.MoveFirst
'Initialize blnFound as false - this will
be set to true if the current file is found in the
'recordset, meaning that it already exists
blnFound = False
'loop through all of the records in the
recordset looking for the current file .foundfiles(i)
Do Until .EOF
'Check to see if the relative path
and filename matches the hyperlink address of the
'current record
If strRelPathFile = ![HypPart2] Then
'If so, set blnFound = true and
exit the do loop.
blnFound = True
Exit Do
End If
'Go to the next record in the
recordset.
'If no more records exist in the
recordset, execution will exit the loop
.MoveNext
Loop

'Check to see if the current file
(.foundfiles(i)) was found in the recordset
If blnFound = True Then
'If so, nothing needs to be done, and
execution will go on to the next (i)
'The following statement was just
used during debugging to display the filename
'and whether it was found.
'MsgBox strRelPathFile & " was found
in tDocRef"
Else
'If the filename wasn't found in the
recordset, it needs to be added (it is an unlinked file)
'Add a new record to the recordset,
note that since the recordset is a dynaset based on a
'query from the tDocRef table, all
updates will pass through to that table.
.AddNew
'Assign the [ProjIDLink]field of the
recordset = the lngProjID variable
![ProjIDLink] = lngProjID
'Assign the [DocHyp] field of the
recordset = the relative path and filename surrounded
'by pound signs (these are needed to
specify that this is the address part of the
'hyperlink
![DocHyp] = "#" & strRelPathFile & "#"
'Assign the employee ID
![EmpIDLink] = intEmployeeID
'Assign the current date and time to
the [Entered] field
![Entered] = Now()
'Post the entry (save it)
.Update
'increment the variable that counts
how many files have been automatically linked
intCountAdds = intCountAdds + 1
'The following statement was just
used during debugging.
'MsgBox strRelPathFile & " was not
found in tDocRef"
End If
End With
Next i
'Close the recordset after all files have been
compared against the recordset
rstDocLinks.Close
Else
'If the filesearch does not find any files,
notify the user and exit the procedure
MsgBox "No files were found in the project folder"
'Requery to be sure that form displays the
records properly since their partial edit was undone.
Me.Requery
Exit Sub
End If
End With

'Requery the subform to display all newly entered
document links.
Me.Requery

'Check to see how many new links were added.
If intCountAdds > 0 Then
'If one link was added, construct the appropriate
message to notify the user and remind them to add the
'file description and check the file name format.
If intCountAdds = 1 Then
strMessage = "1 Document Link was added for this
project." & Chr(13) & Chr(10) & Chr(10)
strMessage = strMessage & "Please add a
description for it and check that it was created with
proper "
strMessage = strMessage & "naming conventions." &
Chr(13) & Chr(10) & Chr(10)
strMessage = strMessage & "If necessary, you can
delete a link by selecting the row containing the "
strMessage = strMessage & "link and pressing the
delete button."
MsgBox strMessage
Else
'If more than one link was added, construct the
appropriate message to notify the user and remind them
'to add the file descriptions and check the file
name formats.
strMessage = intCountAdds & " Document Links were
added for this project." & Chr(13) & Chr(10) & Chr(10)
strMessage = strMessage & "Please add a
description for each one and check that each was created
with "
strMessage = strMessage & "proper naming
conventions." & Chr(13) & Chr(10) & Chr(10)
strMessage = strMessage & "If necessary, you can
delete a link by selecting the row containing the "
strMessage = strMessage & "link and pressing the
delete button."
MsgBox strMessage
End If
End If

End Sub
 
Hi Toby,

Unfortunately I haven't needed to do that before so I'm
not sure if Application.Filesearch is able to browse a
web folder. If not, you may be able to automate the
transfer of the files from the web server to your machine
using a different method and then import from there. You
may want to try a separate post with that question if you
aren't able to figure it out since I'm not sure how many
will read this far down into this post. Let me know if
you do figure it out, I'm sure I may need to do the same
someday.

Good Luck.

-Ted
 
Runtime error '5
Ivalid Procedure Call or Argument

..FileType = msoFileTypeAllFiles

I will be needing to open all of these found files and the data (all similiar fields, just different data) will need to be compiled into one table. Possible?
 
Hi Jason,

I noticed there were two ".'s" before filetype, if it is
like that in your code as well that could be the problem
(I'm guessing it was probably a typo in the post
though). One other possibility, make sure that the
MSOffice Library is selected in your object references.
If that's not it, post back with all of the code (or at
least the part with Application.Filesearch and I'll see
if I notice anything.

What you want to do should be possible though. You
should be able to just loop through the files, import one
at a time to an import table, append to a master table,
then overwrite the import table with the next import, do
the next append, etc.

-Ted
 
Here 'tis

***BEGIN CODE**

Private Sub Command18_Click(

'Declare a variable to act as a generic counter
Dim lngCount As Lon

'Use a With...End With block to reference th
'FileSearch object
With Application.FileSearc

'Clear all the parameters of the previous searches
'This method doesn't clear the LookIn property o
'the SearchFolders collection
.NewSearc
.FileType = msoFileTypeAllFile
'Use this is you have a specific file typ
.FileName = "*.xls
'Use this for exce
.FileTypes.Add msoFileTypeExcelWorkbook

'Set up the search to look in all subfolder
.LookIn = "J:\00ship
.SearchSubFolders = Tru

'Execute the search and test to see if any file
'were found
If .Execute <> 0 The

'Display the number of files found
MsgBox "Files found: " & .FoundFiles.Coun

'Loop through the list of found files an
'display the path of each one in a message box
For lngCount = 1 To .FoundFiles.Coun

If MsgBox(.FoundFiles.Item(lngCount), vbOKCancel,
"Found files") = vbCancel The

'Break out of the loo
lngCount = .FoundFiles.Coun

End I
Next lngCoun
Els
MsgBox "No files found.
End I
End Wit

End Su

***END CODE***
 
Hi Jason,

Nothing unusual caught my eye with your code. I do have
to say that there was one time that one of my procedures
also didn't want to accept this value. Then, I
experimented with adding to the filetypes collection as
you have done later in your code. Shortly after, for
some reason, it started working and I never had another
problem.

If you know that you will always be looking for Excel
spreadsheets, you could just omit this bit of code. Your
later statement adding the Excel filetypes to the
collection will ensure that the search will find excel
files anyway.

If that doesn't help, maybe it has to do with your
version of Office? I'm not really sure.

Let me know what happens if you comment out the .FileType
statement.

-Ted
 
Oh, I did just notice one thing. Try Dimensioning an
object variable and then assigning that to represent
Application.Filesearch - I'm not sure if it is required,
but it is the only way that I have seen it done in the
examples. Maybe Access needs to be told that this is an
object.

-Ted
 
Well, that last idea wouldn't have mattered anyway, I did
find examples where Application.Filesearch was used
without being assigned to a variable. But, did you check
to make sure that the MS Office object library is checked
in your references? You can check from within the VB
environment by going to Tools|References. If the
Microsoft Office Library is not checked you will need to
check it. Other than that, I'm not sure what the problem
is. I would try remarking out the line that is giving
you the error and see if it works (that line shouldn't
really be needed since you have the later statement
adding excel filetypes to the search).
 
Hi Jason,

There was a post from John on one of Toby's other posts
showing how to use the Dir() function to get a list of
files in a folder. This looks like it may be easier than
using Application.Filesearch, especially for you since
last I heard it wasn't working for you. John's message
also gave some sample code. I think this should help you
a lot.

-Ted
-----Original Message-----
Hmm you know what? It was checked. But you know what
else? I just stumbled on a boatload of "references" that
are for that 3rd party program. I am not sure if that is
valuable or not, but I mean, they are there.
 
Ok.. I have a complete working solution to not only scan a directory and import all files into a new table, but also to move all files into an "archive" subfolder after the import is done. This move -as opposed to a rename- was done for a couple of reasons:

1) To eliminate the chance of any update or appends creating duplicate data
2) To eliminate the possibility of a user to "not know" what file was what, how to open, etc
3) Keep the naming convention as-is
4) To process routines on that archive

I appreciate all of your help, and patience. Although I really didn't *completely* get a solution from this forum, certainly several ideas were introduced and I learned quite a bit from the methodology of all input from everyone. I totally thank all of you who had input in my issue... god knows, I will most likely ask something again. =p Prepare yourselves! hehe

~jason
 
Ok.. I have a complete working solution to not only scan a directory and import all files into a new table, but also to move all files into an "archive" subfolder after the import is done. This move -as opposed to a rename- was done for a couple of reasons:

1) To eliminate the chance of any update or appends creating duplicate data
2) To eliminate the possibility of a user to "not know" what file was what, how to open, etc
3) Keep the naming convention as-is
4) To process routines on that archive

I appreciate all of your help, and patience. Although I really didn't *completely* get a solution from this forum, certainly several ideas were introduced and I learned quite a bit from the methodology of all input from everyone. I totally thank all of you who had input in my issue... god knows, I will most likely ask something again. =p Prepare yourselves! hehe

~jason
 
Ok.. I have a complete working solution to not only scan a directory and import all files into a new table, but also to move all files into an "archive" subfolder after the import is done. This move -as opposed to a rename- was done for a couple of reasons:

1) To eliminate the chance of any update or appends creating duplicate data
2) To eliminate the possibility of a user to "not know" what file was what, how to open, etc
3) Keep the naming convention as-is
4) To process routines on that archive

I appreciate all of your help, and patience. Although I really didn't *completely* get a solution from this forum, certainly several ideas were introduced and I learned quite a bit from the methodology of all input from everyone. I totally thank all of you who had input in my issue... god knows, I will most likely ask something again. =p Prepare yourselves! hehe

~jason
 
Back
Top