• Seth,

    Seth,

    You could certainly write a program using the Platform SDK to poll a folder of documents, though the documents would need to have an index file with them (e.g. a "dwcontrol" file). The program could access the database and verify non-duplication, then upload the document.

    If your client is OK with modifying the underlying database, what would happen if you declared the combination of the fields in question as a unique index at the SQL Server system level? I am not sure what would happen if SQL Server simply refused to allow the insert because of such a constraint, but it might perform fewer locks than a trigger (I am not a SQL Server expert).

    If the client does not like the overnight check idea, could you run the check hourly? Even half-hourly? A read-only query of 500,000 records should run really quickly, and so could detect duplication issues often and efficiently (I assume the index fields you check for supes on are indexed).

    EDIT: Here is a link to creating a unique, multi-column constraint, which is maybe what you are already doing:

    https://stackoverflow.com/questions/1670708/how-to-create-composite-unique-constraint-in-sql-server-2005

     

    Thanks,

    Joe Kaufman

  • Can you switch to batch mode?

    Seth,

    If the client has access to the database and does not mind checking for duplicates using direct-to-server queries, can you simply change the duplicate check to be a single batch job that runs at night (or when there is less server traffic)? 

    Instead of checking for duplicates upon inserting a new record (document), just do a single query checking for duplicates by using a GROUP BY on the indexes providing the duplication criteria. I assume you are doing some sort of match on one or more index fields to determine a match. You could runs such a query and get all the duplicates in the database instead of just checking as you insert (might even catch some older dupes that got missed by the trigger-based methodology).

    A custom SQL query has another advantage over a trigger -- a trigger (if I am thinking of the right thing) is something you need to add to the database that becomes a part of the database. If anything needs to be reset, that trigger would need to be rebuilt. If instead you use a query from an outside tool (e.g. a C# app), you can run that any time and not have to worry about updates to the server or the imaging software.

    Of course, this all depends on the nature of the duplication check -- I may be over-simplifying...

     

    Thanks,

    Joe Kaufman

  • Similar thread

    Is this the same thing?

    https://www.docuware.com/forum/english-forums/docuware-questions-about-usage-and-configuration/multiple-indexing-stops-half-way-through

    Not sure how (or if) that ever got resolved...

     

    Thanks,

    Joe Kaufman

  • David,

    David,

    Does SHIFT-click work to highlight adjacent documents?

    What it you do a view mode other than list view? Does that change the behavior of Ctrl-click or Shift-click?

    I would think a Surface Laptop would be like any other laptop since it has a keyboard, correct?

    I assume you can highlight multiple files in Windows Explorer, or multiple icons on the desktop, etc? I n other words, all other Windows-based multi-selections work? It just doesn't work in DocuWare?

    Oh, one other idea -- what browser are you using on the Surface Laptop, and have you tried others? It may be browser specific with regard to how the HTML5 funcitonality is working with tapping the screen. Are you using taps to emulate clicks, or using an actual mouse with the keyboard?

     

    Thanks,

    Joe Kaufman

  • Morgan,

    Morgan,

    I did over a dozen configs and was jumping through all sorts of hoops with new barcoding on scan sheets before I realized.  *smile*

     

    Thanks,

    Joe Kaufman

  • Seth,

    Seth,

    "conn" is an instance of a type (or an "object" of a "class" in some nomenclature).

    If you create a "conn" variable and then go after Organizations right after, it should work, so I am not sure what you mean by the section after the period not working. This just sounds like a variable scope issue. If you create "conn" in a click event method and then elsewhere in the form try to use "conn" (without passing it in as a parameter) it won't work. That is why some of my examples are things like "DWConn" where DWConn is actually a form-level property declared at the top of the form like:

            private ServiceConnection DWConn = null;
            private Organization DWOrganization = null;

    When declared at that level, the editor recognizes them even without a "this" keyword in front. I use form-level member variables for thngs that need to be accessible everywhere on the form, and the connection and organization get instanced upon connecting.

     

    Thanks,

    Joe Kaufman

  • Morgan,

    Morgan,

    If I am remembering correctly, aren;t the Import COnfig fields actually a series of potential fields? You can mix literal, scanned, and calculated values and concantenate them all together. So, you should be able to make a literal portion of the field say "WEB" and then add another part to that field with the scanned in PO value.

    Let me know if you can see what I mean -- what import config screen are you using? 6.11 or before, or 6.12 or 7.0? I do not know what the import config screens look like for 6.12 and up...

    Thanks,

    Joe Kaufman

  • Org

    Seth,

    You will want to get the Organization, first:

    Organization org = DWConn.Organizations[0];

    assuming "DWConn" is your ServiceConnection instance and you only have one organization on the server you are authenticated to (zero-indexed array, so zero equals the first one).

    And then you can do something like this with the Organizaiton instance:

    List<FileCabinet> fileCabinets = org.GetFileCabinetsFromFilecabinetsRelation().FileCabinet;
    foreach (FileCabinet fc in fileCabinets)
    {
        if (!fc.IsBasket)
        {
            lvAddedItem = lvFileCabinets.Items.Add(fc.Name, 0);
            lvAddedItem.SubItems.Add(fc.Id);
        }
    }
     

    lvFileCabinets is a ListView control I have on my form. You can put the name of the file cabinet wherever you want. The main fields you will want from a FileCabinet object are Name and Id (the guid).

     

    Thanks,

    Joe Kaufman

  • Let me guess...

    Let me guess -- you had the username and password switched? I tihnk I had that happen for a while, or maybe that was in URL Integration...

    If you have a ServiceConnection up and running, you are almost there!

     

    Thanks,

    Joe Kaufman

  • You can do it...

    Seth,

    If you create a Wndows Forms app (know that the tech for that is considered outdated, but it still works), it starts you off with a single form that will display when you run the app. Just put a button on there and start by putting everything in the Click event. You can refactor later to separate code out and be more organized. But this will get your feet wet.

    You can download the NuGet packages based on the instructions here:

    http://help.docuware.com/sdk/platform/html/66b2ed1e-2aef-452a-97cd-5014bbf0242b.htm

    and from there you just need to "using" the DocuWare modules so that all the types become available (and turn blue, etc. as you type). There are more examples if you drill down from the link above, such as setting up your first connection:

    http://help.docuware.com/sdk/platform/html/8ecbfe35-9182-4acc-833e-ac0f1857347e.htm

    Learning how to create a whole application in C# is a whole thing, for sure, but I bet you can come up with an application that can perform basic operations that you want, building yourself a little toolbox. You may need to place some of the DocuWare .NET DLL files alongside the resulkting executable after you do a build, but then you have yourself a Windows application that you can customize to do anything you need! There isn;t really any other shortcut for this when it comes to using the Platform Service -- it's custom coding time.

     

    Thanks,

    Joe Kaufman