Solved

Mass import revisited

Posted on 2003-10-21
49
431 Views
Last Modified: 2008-02-01
I had a question on mass import which was solved. Now however some new problems arrived so here they are.

I needed ACCESS to pick up all the text files in a directory and import them into a table in acces. The format of the files were supposed to be in tab delimited none text qualifier format. However I just found out that at the begining of time there were files that used the tab delimited "(quotationmark) textqualifier and some that used the ,(comma) delimited " text qualifier format. Plus I have just found some filet that came in an .xls (excel spreadsheet) format and those actually contain headers as well. I know how to make the schema files but I do not know if there is a way to tell the code to check for and pick up the different type of files with the different schema files that correspond with their settings.
I use the following code:

Private Sub Command0_Click()

myPath = "C:\Records\"    ' Set the path.
    myName = Dir(myPath, vbDirectory)    ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        myfullFile = myPath & myName
        If Right(myfullFile, 4) = ".txt" Then 'import it
            DoCmd.SetWarnings False
            DoCmd.OpenQuery "DeleteMass"
            DoCmd.TransferText acImportDelim, "MI", "Imports", myfullFile, 0
            DoCmd.OpenQuery "AppendMass"
            DoCmd.SetWarnings True
        End If
       
        myName = Dir()
       
    Loop

End Sub
 
This works perfectly with one set of files. But it makes a lot of error tables for the rest. Also I would like to pick the files up by their ascending date stamp not by their name if that is possible at all well.
0
Comment
Question by:thadson
  • 21
  • 20
  • 8
49 Comments
 
LVL 1

Expert Comment

by:duoba
ID: 9594669
You might want to check that the import specification for the second set of files is complety valid.
0
 
LVL 1

Expert Comment

by:duoba
ID: 9594696
You may well need more than one import specification and use a conditional statement to apply the right import sepc to the right file.

The only way I can think of, and I havent wanted to do this before, read your name and datestamp into an array, sort your array and then pick the files out in the order you want them.
Alternatively you could read teh file properties into a table, sort them. And the read the files in that order.
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9594731
Hey! thadson,

  I would probably done this by processing the text files as one loop and the xls as a second loop

  Let me show you my txt loop:


  'DOING txt only in this loop
    myPath = "C:\Records\*.txt"    ' Set the Mask
    myFile = Dir$(myFile, vbNormal)    ' Retrieve the first Filename.
    Do While len(myFile> 0    ' Start the loop.

        myfullFile = myPath & myName
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "DeleteMass"
        DoCmd.TransferText acImportDelim, "MI", "Imports", myfullFile, 0
        DoCmd.OpenQuery "AppendMass"
        DoCmd.SetWarnings True
       
        myName = Dir()
       
    Loop

I would split the txt from the xls because of the likelyhood of there being the need for differences in the processing logic.
I have modified the Dir$() function to seek only the .txt files
Do another loop for the .xls and I think that will get it.

regards
Jack
0
 

Author Comment

by:thadson
ID: 9600564
Jadedata: how will this separate the comma delimited text files from the tab delimited ones that are in the same directory for the proper import?
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9601371
Can you tell one from the other by the name of the file?
0
 

Author Comment

by:thadson
ID: 9601807
No I can not. The only way is looking inside the file and see if they are
"name","address","phone"  (comma delimit quote text qualifier)
or
name address phone  (tab delimit none text qualifier)
or
"name" "address" "phone" (tab delimit quote text qualifier)
format.
I was wondering if the computer could look automatically instead of me doing it manually.
Otherwise the import script is working already, but it would mean that I would have to start separating out hundreds of files into different locations by formatting types manually. And that is not funny.
0
 
LVL 1

Expert Comment

by:duoba
ID: 9601837
You can write a funciton that takes the file name

Opens a text stream and then goes through it looking at patterns
and then returning the type of file.

If you look on the net you will probably find someone has already done something like that before.
0
 
LVL 1

Expert Comment

by:duoba
ID: 9601852
It probably wouldnt be that difficult, especially if you knew all the diffrent combinations you were going to get. Are you just writing this in vb
0
 

Author Comment

by:thadson
ID: 9601936
I'm trying to get this done in access as a module written in vb. I'm a newbie on this though. So the "You can write a function" part does not really helps... I can't, as if I could, I would not ask for help... However just by knowing this is possible in some ways, helps a lot, as I'm researching this in books as well and your answers show that at least I do have the right idea and my search is well spent. So any help on this is still appreciated.
0
 

Author Comment

by:thadson
ID: 9601997
Oh, and yes, looking into the files, those 3 are the only combinations I have seen so far, however creating schemas for them is not that big a deal. But for the code to look into the file determine the correct schema and then import it into the same table seems to be a fairly complex thing for me...
0
 
LVL 1

Expert Comment

by:duoba
ID: 9602001
Im also haveing a look to see if I can find something, its an interesting problem that is not entirely uncommon. So I would be surprised if there isnt a parser that is already out there
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9602077
dim strRecord
Open FilePathandName for Input as #150
 'here you look at the contents of the file to check for comma or tab delimiters
 input #150, strRecord
 if instr(chr(8),strRecord)>0 then 'tab chr found
   'use tab delim spec
 else
   'use comma delim spec
 endif
Close #150
0
 
LVL 1

Expert Comment

by:duoba
ID: 9602118
If you dont mind waiting till tommorrow I could throw a function together for you.
0
 
LVL 1

Accepted Solution

by:
duoba earned 100 total points
ID: 9602142
There you go, jadedata already done something for you
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9602171
Look up the help system stuff on Open Statement and all the "See Alsos"  Low level file I/O is very handy stuff to know if you have to work with external files.
0
 

Author Comment

by:thadson
ID: 9602661
Would this do it?:

Private Sub Command0_Click()

myPath = "C:\Records\"    ' Set the path.
    myName = Dir(myPath, vbDirectory)    ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        myfullFile = myPath & myName
        If Right(myfullFile, 4) = ".txt" Then
      dim strRecord
      Open FilePathandName for Input as #150
       'here you look at the contents of the file to check for comma or tab delimiters
       input #150, strRecord
       if instr(chr(8),strRecord)>0 then 'tab chr found
          SUBSTITUTE(",",,)
            DoCmd.SetWarnings False
            DoCmd.OpenQuery "DeleteMass"
            DoCmd.TransferText acImportDelim, "MItab", "Imports", myfullFile, 0
            DoCmd.OpenQuery "AppendMass"
            DoCmd.SetWarnings True
        else
            SUBSTITUTE(",",,)
          DoCmd.SetWarnings False
            DoCmd.OpenQuery "DeleteMass"
            DoCmd.TransferText acImportDelim, "MIComma", "Imports", myfullFile, 0
            DoCmd.OpenQuery "AppendMass"
            DoCmd.SetWarnings True
      endif

        myName = Dir()
       
    Loop

End Sub
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9602988
SUBSTITUTE(",",,)

What's that do????
0
 
LVL 1

Expert Comment

by:duoba
ID: 9603410
I suspect you will find it sustitutes the first string with the second, or visa versa
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9603614
Thats what the replace command is for.
0
 

Author Comment

by:thadson
ID: 9604693
Quote
SUBSTITUTE
Replaces existing text with new text in a text string.

Syntax

SUBSTITUTE(text,old_text,new_text,instance_num)

Text   is the text or the reference to a cell that contains the text you want to replace.

Old_text   is the existing text you want to replace. If the case of Old_text does not match the case of text, SUBSTITUTE will not replace the text.

New_text   is the text you want to replace Old_text with.

Instance_num   specifies which occurrence of Old_text you want to replace. If omitted, every instance of Old_text is replaced.
Quote end

This is to make a " text qualifier in the body of the text file into a none text qualifier. This would reduce the possible choices into two comma delimited file none text qualifier and tab delimited none text qualifier, as if there is no " in the body of the file than nothing changes however if there is a " it disapears.

Bus back to the question, does that code looks right or did I messed it up by putting stuff to the wrong place?
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9606106
Before we get back to the original question....
I'm still confused about the substitute().  Rephrase this: "This is to make ....."

My concern is that if you are changing a substantialling critical element in a CSV (maily commas) the format may become unusable for import. The number of fields will appear to have changed.  And what else is confusing is that you are doing this on both comma and tab files.
0
 

Author Comment

by:thadson
ID: 9608318
I do not want to change the commas or tabs. As I said earlier, I have 3 tipes of .txt files
1) name address phone
2) "name" "address" "phone"
3) "name","address","phone"

1 is a tab delimited, none text qualifier
2 is a tab delimited, " text qualifier
3 is a comma delimited, " text qualifier.

the script is written to handle only 2 types of files. if I can get rid of the " text qualifiers from every file that has them in there, than the script should work for the remaining 2 choises which would be
a) name address phone (tab delimited none text qualifier)
b) name,address,phone (comma delimited none textqualifier)
this would solve it.
I was looking up the substitute command again and I found it in access help but not in vb help so maybe it is not a solution at all, but then what is...

Do this make any sence? If not just please ask me more...
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9608431
yikes!,... I feel your pain!!  It's making perfect sense now.  Thank you for taking the time.

I believe you are thinking of the Replace command, but this would only work in individual expressions, not entire files (easily)

Do these files come to you with names that would provide a clue as to the format? (1, 2 or 3)
0
 

Author Comment

by:thadson
ID: 9608930
Nope, names are usually 1240_010103.txt and of curse the guys who send these are cluless on standard dataflow... anyway, I might just solved the problem of " or none text qualifiers in a different way so lets concentrate of the problem of 2 types of files.

1) name    address phone
2) name,address,phone

I include the revised code for this. Please let me know if it is not right. Here it is:

Private Sub Command0_Click()

myPath = "C:\Records\"    ' Set the path.
    myName = Dir(myPath, vbDirectory)    ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        myfullFile = myPath & myName
        If Right(myfullFile, 4) = ".txt" Then
     dim strRecord
     Open FilePathandName for Input as #150
      'here you look at the contents of the file to check for comma or tab delimiters
      input #150, strRecord
      if instr(chr(8),strRecord)>0 then 'tab chr found
            DoCmd.SetWarnings False
            DoCmd.OpenQuery "DeleteMass"
            DoCmd.TransferText acImportDelim, "MItab", "Imports", myfullFile, 0
            DoCmd.OpenQuery "AppendMass"
            DoCmd.SetWarnings True
        else
         DoCmd.SetWarnings False
            DoCmd.OpenQuery "DeleteMass"
            DoCmd.TransferText acImportDelim, "MIComma", "Imports", myfullFile, 0
            DoCmd.OpenQuery "AppendMass"
            DoCmd.SetWarnings True
     endif

        myName = Dir()
       
    Loop

End Sub
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 32

Expert Comment

by:jadedata
ID: 9608980
Ok,.... looking pretty good so far.

Add an element that will help you determine which files have been successfully processed.

Add:
  Name myPath & MyName as MyPath & "z" & MyName

just above the
  myName = Dir()

This will rename files that have processed with a "z" tag on them and move them to the bottom of the heap.  This means that if the process stalls or aborts, you only have to re-run the files that didn't work right the first time.

WALK thru this code on your first attempt.  Do you know what I mean by this??

0
 

Author Comment

by:thadson
ID: 9609225
I understand, very slick :-)
I will get back to you after some testing.
WALK thru should be a line by line execution????
0
 

Author Comment

by:thadson
ID: 9609264
By the way I'm new here so this is the first time I'm doing this but I tried upping the points to 500 and will split if I can like this:
jadedata: 300
duoba: 200
after we finished with this subject
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9609317
that's completely up to you thadson.  Them be your points.
Walk thru is indeed line by line using the {F8} key to "step" through the code.

See the line:
  resume
in the error trap.

If the code errors and jumps to the trap you can return to the "problem child" line by:
  Clicking on "resume" (not resume cboFilterSurname_Exit,  that will kick you out...)
  {CTRL}{F9} (highlights the resume line)
  {F8} (takes you back to the problem line.
 
Make edits to resolve the error and hit {F8} to see if your correction worked.

You ready???
0
 

Author Comment

by:thadson
ID: 9609563
I run this:

Option Compare Database

Private Sub Command0_Click()

MyPath = "C:\Records\"    ' Set the path.
    myName = Dir(MyPath, vbDirectory)    ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        myfullFile = MyPath & myName
        If Right(myfullFile, 4) = ".txt" Then
        Dim strRecord
        Open FilePathandName For Input As #150
        'here you look at the contents of the file to check for comma or tab delimiters
        Input #150, strRecord
            If InStr(Chr(8), strRecord) > 0 Then 'tab chr found
                DoCmd.SetWarnings False
                DoCmd.OpenQuery "DeleteMass"
                DoCmd.TransferText acImportDelim, "MItab", "Imports", myfullFile, 0
                DoCmd.OpenQuery "AppendMass"
                DoCmd.SetWarnings True
            Else
                DoCmd.SetWarnings False
                DoCmd.OpenQuery "DeleteMass"
                DoCmd.TransferText acImportDelim, "MIComma", "Imports", myfullFile, 0
                DoCmd.OpenQuery "AppendMass"
                DoCmd.SetWarnings True
            End If
        Name MyPath & myName As MyPath & "z" & myName
        myName = Dir()
       
    Loop

End Sub

I got an error saying no Do for loop

So I added in an End If at the end adn run it this way:

Option Compare Database

Private Sub Command0_Click()

MyPath = "C:\Records\"    ' Set the path.
    myName = Dir(MyPath, vbDirectory)    ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        myfullFile = MyPath & myName
        If Right(myfullFile, 4) = ".txt" Then
        Dim strRecord
        Open FilePathandName For Input As #150
        'here you look at the contents of the file to check for comma or tab delimiters
        Input #150, strRecord
            If InStr(Chr(8), strRecord) > 0 Then 'tab chr found
                DoCmd.SetWarnings False
                DoCmd.OpenQuery "DeleteMass"
                DoCmd.TransferText acImportDelim, "MItab", "Imports", myfullFile, 0
                DoCmd.OpenQuery "AppendMass"
                DoCmd.SetWarnings True
            Else
                DoCmd.SetWarnings False
                DoCmd.OpenQuery "DeleteMass"
                DoCmd.TransferText acImportDelim, "MIComma", "Imports", myfullFile, 0
                DoCmd.OpenQuery "AppendMass"
                DoCmd.SetWarnings True
            End If
        End If
        Name MyPath & myName As MyPath & "z" & myName
        myName = Dir()
       
    Loop

End Sub

Now it gives me a runtime error 75
Path/file access error

and debug highlights this line:
Name MyPath & myName As MyPath & "z" & myName

any suggestions?
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9609628
at the time of error what are the values of the Mypath and myname variables?
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9609774
right after the line:
  Input #150, strRecord

Put
  Close #150

This will release the write lock on the current file in processing.
0
 

Author Comment

by:thadson
ID: 9609775
MyPath = "C:\Records\"
myName="."

when I put the cursor over the yellow highlited words mypath and myname
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9609815
This line:
  myName = Dir(MyPath, vbDirectory)    ' Retrieve the first entry.

is not looking for a .txt file.  It should be:
  myName = Dir(MyPath & "*.txt", vbnormal)    ' Retrieve the first entry.

walk the code to just past this line and float your cursor over myname and tell me what is says then.

0
 

Author Comment

by:thadson
ID: 9615707
The code is now picking up all the files and processes them, however it picks up all the tab delomited files as they have only 1 long field with tabs in them. I know that the schema file works as I tested that separately, so I guess the code does not see the tab delimited files as tab delimited. It picks up the commadelimited ones just perfect.
Here is how it looks like now.

Private Sub Command0_Click()

MyPath = "N:\_Records\"    ' Set the path.
    myName = Dir(MyPath & "*.txt", vbNormal)    ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        myfullFile = MyPath & myName
        If Right(myfullFile, 4) = ".txt" Then
        Dim strRecord
        Open myfullFile For Input As #150
        'here you look at the contents of the file to check for comma or tab delimiters
        Input #150, strRecord
        Close #150
            If InStr(Chr(8), strRecord) > 0 Then 'tab chr found
                DoCmd.SetWarnings False
                DoCmd.OpenQuery "DeleteMass"
                DoCmd.TransferText acImportDelim, "MITab", "Imports", myfullFile, 0
                DoCmd.OpenQuery "AppendMass"
                DoCmd.SetWarnings True
            Else
                DoCmd.SetWarnings False
                DoCmd.OpenQuery "DeleteMass"
                DoCmd.TransferText acImportDelim, "MIComma", "Imports", myfullFile, 0
                DoCmd.OpenQuery "AppendMass"
                DoCmd.SetWarnings True
            End If
        End If
        Name MyPath & myName As MyPath & "z" & myName
        myName = Dir()
       
    Loop

End Sub
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9615769
Put a STOP command after the Close #150

Check the contents of the strRecord Variable to see if the tabs can be found in the string

The line:
  Input #150, strRecord
should be reading the entire first row of the file after it is opened.

test this in the debug.window while the code is stopped:
  ?InStr(Chr(8), strRecord)
to see if Access finds tabs in the files that are supposed to have them.

post your findings....
0
 

Author Comment

by:thadson
ID: 9615938
I have run  ?InStr(Chr(8), strRecord)
and it returns a 0 (zero)
0
 

Author Comment

by:thadson
ID: 9615949
can I send you some test files I try to import?
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9616245
<my ee username> <at> PTC <dash> ME <dot> NET
(meta coded to prevent being spammed.)
1 tab formatted file please.
0
 

Author Comment

by:thadson
ID: 9616323
I just sent it. I also included my test DB, it is very small only 67k in a zip format. I sent it just in case but you can disregard it if you wish. Again, thank you for the help.
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9616525
Two changes:

Change this:
  Input #150, strRecord

to:
  Line Input #150, strRecord

Change this:
  If InStr(Chr(8), strRecord) > 0 Then 'tab chr found
to:
  If InStr(Chr(9), strRecord) > 0 Then 'tab chr found
                   ^----- DOH!!
wrong ascii number for the tab character.
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9616537
Hold on that solution just a moment....

(we are experiencing technical difficulties...)
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9616588
NEW FORM MODULE CODE IN ENTIRETY:
Changes include:
  The use of the Option Explicit command in the Declarations (turn this option ON in your database options Module tab.)
    (it requires you to declare variables before using them...)

  Using Line Input instead of Input which only reads to the first Tab Chr.
  Line Input reads to the first CRLF

Change your folder pointer back before running...

'--------------------------------
Option Compare Database
Option Explicit

Private Sub Command0_Click()

  Dim mypath As String, myname As String, myfullfile As String
  Dim x As Long
  Dim Tabbed As Boolean
 
    mypath = "F:\ExpExch\"    ' Set the path.
    myname = Dir(mypath & "*.txt", vbNormal)    ' Retrieve the first entry.
    Do While myname <> ""    ' Start the loop.
        ' Ignore the current directory and the encompassing directory.
        myfullfile = mypath & myname
        If Right(myfullfile, 4) = ".txt" Then
        Dim strRecord
        Open myfullfile For Input As #150
        'here you look at the contents of the file to check for comma or tab delimiters
        Line Input #150, strRecord
        Close #150
        For x = 1 To Len(strRecord)
          If Asc(Mid(strRecord, x, 1)) = 9 Then
            Tabbed = True
            GoTo command0_ImportIt:
          End If
        Next x
       
        Stop
command0_ImportIt:
          If Tabbed Then  'tab chr found
              DoCmd.SetWarnings False
              DoCmd.OpenQuery "DeleteMass"
              DoCmd.TransferText acImportDelim, "MITab", "Imports", myfullfile, 0
              DoCmd.OpenQuery "AppendMass"
              DoCmd.SetWarnings True
          Else
              DoCmd.SetWarnings False
              DoCmd.OpenQuery "DeleteMass"
              DoCmd.TransferText acImportDelim, "MIComma", "Imports", myfullfile, 0
              DoCmd.OpenQuery "AppendMass"
              DoCmd.SetWarnings True
          End If
        End If
        Name mypath & myname As mypath & "z" & myname
        myname = Dir()
       
    Loop

End Sub
'--------------------------------
0
 

Author Comment

by:thadson
ID: 9617122
Now it turned around and it does not recognize the comma delimited anymore. It just puts the whole record into the first field like this:
1240,4th co.,,4 ct,,nocity,CA,45123,Noone,OWNER,66
Maybe I just did not set something right... the schemas should work...

This is not entirely clear: The use of the Option Explicit command in the Declarations (turn this option ON in your database options Module tab.)

is this done by me typing
Option Explicit
underneath
Option Compare Database

or I have to go somewhere special to turn this on?
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9617290
Access has an option called "Require Variable Declaration"  Turning this on (selecting it from Tool/Options/Module tab) will put the
Option Explicit
line in all new modules
READ UP ON THIS IN THE HELP FILE...

the tab schema does indeed work and the code I sent you caught that the file had chr(9) in the first row, which is the condition we are checking.  Send me one of your comma format files and we'll see why that failed now that we fixed the other one...
0
 

Author Comment

by:thadson
ID: 9617322
I have sent the file :-)
0
 
LVL 32

Assisted Solution

by:jadedata
jadedata earned 400 total points
ID: 9617354
Change this:
          If Asc(Mid(strRecord, x, 1)) = 9 Then
            Tabbed = True
            GoTo command0_ImportIt:
          End If

To:
          If Asc(Mid(strRecord, x, 1)) = 9 Then
            Tabbed = True
            GoTo command0_ImportIt:
          ElseIf Asc(Mid(strRecord, x, 1)) = 44 Then
            Tabbed = False
            GoTo command0_ImportIt:
          End If

apparently we have to tell Access how to do everything here...

0
 

Author Comment

by:thadson
ID: 9617472
I think this is perfect now, I turned on the Option Explicit the way you have said. I have even made a message box appear now after the import is done.  98% of the records were imported perfectly.... the rest had problems due to incorrect field placement in the records by their senders... I can live with that as those are old and few. I exported ower 9000 records in a few minutes. Thank you for all the help. WOW.
 
0
 
LVL 32

Expert Comment

by:jadedata
ID: 9617506
I like that WOW.  That tells me you learned something here too!!  

This process (Open/Input/Close) is referred to as low level I/O and is huge benefit when dealing with text and text-like files.

Now,.. (homework time)  Look up these commands in the Access Help system.  
Tell me how you would:
  Open a target file to be used as a Process Log that will show each file processed and how many records were imported from it.
  (this will require some code changes you might not yet be familiar with... it's called a challenge.)
  Theoretical offerings will be accepted but I'm looking for some detail.
0
 

Author Comment

by:thadson
ID: 9617510
I'm sorry duoba, but jadedata worked so much more on this that I have to change how I split the points. I think 100/400 is fair.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

In the previous article, Using a Critera Form to Filter Records (http://www.experts-exchange.com/A_6069.html), the form was basically a data container storing user input, which queries and other database objects could read. The form had to remain op…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now