Archive for category General

Finally – One Place for all things Web Development?

Sounds too good to be true, doesn’t it? Only time will tell.

On Monday, October 8, 2012 there was an announcement by W3C on the alpha release of Web Platform Docs.  The purpose of this is to establish a single point/place where we all can go for “All Things Web Development”.

Her’s a blog posting by Jean Paoli (President – Microsoft Open Technologies) on the announcement:

http://blogs.msdn.com/b/interoperability/archive/2012/10/08/w3c-s-web-platform-docs-your-go-to-for-all-things-web-development.aspx

 

Bear in mind this site is only a few days old but it has names like Adobe, Facebook, Google, HP, Microsoft, Mozilla, Nokia, Opera that are stewards of the project. If they pull this off it will save all of us TONS of time (translate $$$) in development/research as related to web efforts.

Let us wish them the best and contribute to the effort for the common good! So jump over and take a look NOW!

, , , , , , ,

Leave a comment

SalesLogix Synchronization – Running as a Service

It’s amazing how many times I run across a situation where the Main Sync (and/or Secondary Sync Servers) are running under the (Windows)Task Scheduler. At first, this does not seem to be an issue. However, on closer examination there’s a high degree of probability the (WTS) job is not passing in the “correct” sequence of “switches” (options).

The way this usually rears its ugly head is:
A – the job runs too long and another one tries to start up
B – the job fails to start for some unknown reason
C – the job “hangs” for some unknown reason(s)

The Saleslogix team solved this problem a LONG time ago with the introduction of “Sync As A Service”. Basically it is all “built-in” and the admin interface is thru the (WG)Admin application (click on “System” in the NavBar and then on the Sync Automation Services tab) and all you need to know to get started is in the HELP file (under Synchronization -> Running Synchronization from a Service).

All this is fine for the MAIN DB.. BUT what about the Remote Office you ask.. Well, as of the (current) latest release (7.5.4.xxxx) there is no automation for Sync on the RO…. BUT you can “fake it” via Windows Task Scheduler. Here’s info on how to do this from my KB – NOTE – DISCLAIMER – The following procedure may not be fit for any useful purpose – use at YOUR OWN RISK! It is an EXAMPLE of one I use at customer sites:

Using the Windows Scheduler you can schedule a Remote Office (or even a Remote User) to have synchronization run automatically.
  Here is how:
    TASK tab
      run:
         "C:\Program Files\SalesLogix\SyncClient.exe" /B "SLXRemote" /E /Q /L /G /Y /R /C /A /S /TD /TU
      Start in:
         "C:\Documents and Settings\All Users\Start Menu\Programs\SalesLogix"
      Run as:
        domain\administrator (NOTE: This is how I do it.. you may want to use another user)

    SCHEDULE tab
      Schedule: Daily
      start time: 05:15
      Repeat Task every 15 minutes
      Until 24 hours
      Schedule Task Daily Every 1 days

    SETTINGS tab
      Stop task if it runs for 2 hours 0 minutes
      Don't start task if the computer is running on batteries
      Stop the task if battery mode begins.

    SECURITY tab
      Group/Users
      Administrators Full control

NOTE: Running Synch as a Service using the OOTB (Out Of The Box) approach also has additional benefits:
A – You can use the Synch Monitor Tool to see what it is doing. If it is NOT on your (LAN connected) PC than simply copy it (SLXMonitorConsole.exe w/the help file SLXMonitor.chm) to your system – to the SalesLogix App Directory, make a desktop shortcut and then configure (see Help FIle).
B – When it runs as a service it will insert a record in the SYNCJOBHISTORY table.

There is a LOT more to say about synch.. but let us leave it for another day – Happy Synching!

, , , , ,

Leave a comment

SQL Azure vrs. Amazon RDS SQL Server – Which Way?

SQL Server Central recently published an article on the (above) subject on July 11,2012. The author (Peter Marriott) makes an interesting statement:
“..It doesn’t take long to realise that Amazon RDS SQL Server is a very different beast from SQL Azure.”

He goes into features, power and size, Backup and Availability, Administration, and finishes up with a good “pro/con” set of statements on both approaches.

My takeaway was (IMHO) if you really want a “scale-able system”, Amazon is the way to go – NOT Azure! However, I do invite you to go and read the (fairly short and concise) article and comment.

, , , , , , ,

Leave a comment

#Outsourcing and #Offshoring – What is the REAL Truth Here?

Unless you live with your head stuck in a very dark place .. 😉 … You have heard a “bit of” public discussion and comments about how “Outsourcing” is a bad thing.

Well – I am here to say ” reductio ad absurdum” –

Business is all about outsourcing and it starts at the lowest level. To start with a fairly absurd (and obvious situation), we do not “build our own mobile phones” – we pay someone else to do it – we “outsource”. On a higher plane – (most) businesses do not write their own accounting/erp package or their crm system – they “outsource”.  There are TONS of examples we all can come up with and not have to “strain the brain” as one may say. The vast majority of SMB (Small/Medium Businesses) on the planet outsource and provide outsource services to those who do.

The fallibility of the “Outsourcing is bad” statement lays in the confusion between the words:
Outsourcing and Offshoring

The REAL “bad one” is Offshoring and those (in the public sector) who are saying “Outsourcing is bad” need to extract their brain from that deep dark place, look it (Outsourcing and Offshoring) up in the dictionary (or wikipedia), and stop being intellectually dishonest to all of us.

, , , ,

Leave a comment

How Do I Run a VBScript OUTSIDE of SalesLogix?

VBScripts CAN be run completely outside of SalesLogix. BUT you do not have access to the SalesLogix Application object.

First you need to be able to make a connection to the (SalesLogix) Provider. The key part here is to pass in a valid (SalesLogix Provider) connection string. I usually create a “.udl” file to do all the heavy lifting here. This is what the contents of a typical “.udl” looks like:

 [oledb]
; Everything after this line is an OLE DB initstring
Provider=SLXOLEDB.1;Password=mypassword;Persist Security Info=True;User ID=admin;Initial Catalog=SALESLOGIXV754DEV;Data Source=GOBIDEV;Extended Properties="PORT=1706;LOG=ON;CASEINSENSITIVEFIND=ON;AUTOINCBATCHSIZE=1;SVRCERT=;"

Now we need to concentrate on the actual script itself. For this example we assume the “.udl” file is called MyConnection.udl and is located at the root of “C” (C:\MyConnection.udl) :

 
Sub Main
  Dim objCon  'SalesLogix Connection Object
  Dim sConnString
  Dim strSQL00
  Dim objMyRS
  Dim blnNewSlxConnection

  'Get a connection to SalesLogix - Cannot use the Application Object in an Agent or outside of SalesLogix
  ' We have to do all of this "outside"
  sConnString= "File Name=C:\MyConnection.udl"

  'Now connect up
  Set objCon = CreateObject("ADODB.Connection")
  If Err.Number <> 0 Then
    blnNewSlxConnection= False
    If IsObject(objCon) Then
      Set objCon = Nothing
    End If
    Err.Clear
    Exit Sub
  Else
    blnNewSlxConnection= True
    objCon.ConnectionString = sConnString
    objCon.Open
  End If

  'Do some work - get data from USERINFO table
  strSQL00 = "SELECT * FROM sysdba.USERINFO"
  Set objMyRs = CreateObject("ADODB.Recordset")
  With objMyRS
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .LockType = adLockBatchOptimistic
    .Open strSQL00, objCon
  End With
  'Now pull in data from USERINFO... and do something with it
  If Not (objMyRS.EOF Or objMyRS.BOF) Then
    'OK
    With objMyRS
      If .RecordCount > 0 Then
        'We have data - now do work...
        While NOT (.EOF or .BOF)
          strUserID = .Fields("USERID").Value
          strLastName = .Fields("LASTNAME").Value
          'Now do some work w/this data
          Call WriteResultsToTraceFile(strUserID,strLastName)
          .MoveNext
        Wend
     Else
       'No data found...
     End If
  End With
  'All done..close shop
  If IsObject(objMyRS) Then
    objMyRS.Close
  End If
  Set objMyRS = Nothing
  If IsObject(objCon) Then
    objCon.Close
  End If
  Set objCon = Nothing

The above is a very simple framework and certainly can be expanded. I have created an include file that contains several of the key functions:

Function NewSlxConnection(ByVal sConnString, objCon)
Function CloseSlxConnection(objCon)
Function GetRecordSetObj(objCon,ByVal strSQL)
Sub CloseRecordSetObj(objRS)
Function ChkError(strInfo)
Function FixQuote(ByVal sSrcLine)
Function ExecuteSQL(objCon, ByVal sSQL00)
Function GetScalarValue(objCon, ByVal sSQL00)
Function GetMultipleScalarValue(objCon,ByVal strSQL, ByVal iRecCount, strValue)
Function GetMultipleValuesFromDB(objCon, ByVal strSQL, strValue)
Function CreateIdFor(objCon, ByVal sTableName)
Function CreateBlockOfIDFor(objCon,ByVal strTableName, ByVal sRecCount, strRecordID)
Function IsEmptyRecordset(ByRef objRS)
Function GetRecordCount(objCon,ByVal TableName, ByVal PKName, ByVal sWhere)

We use this include file in all our external VBScripts and for a small fee we do license it to anyone who is interested (along with some samples/examples).

, , , , ,

Leave a comment

Is Low Tech the NEW High Tech?.. The Pencil

For those who do not know – March 30 was(is) National Pencil Day…. and stats indicate sales are UP this past year on WOOD pencils and associated accessories (sharpeners, erasers, etc.).

Remember that Number 2 yellow pencil? You first learned to write with one and probably left a few teeth marks on a few as well. ..and NO you do not have “lead poisoning” because “lead pencils” were NEVER made of lead. They were always (and still are) made of graphite.

In my early engineering days we were encouraged to keep a daily journal/notebook. Always writing down little (and large) items during our day. We did this with a (yellow) number 2 pencil. I still keep a spiral bound notebook to the right of my keyboard and jot things down (in pencil ;-). Every morning the first thing that is typically done is to draw a horizontal line.. make note of the day and date.. and to make a time entry with something like “.. Read Email & NG’s..” When I answer the phone I also make a note. At lunch time there is a blocked out time slot noted for lunch. If you were to take a look at my (office) supply/storage closet you would see a pile of 8.5 x 11 spiral bound notebooks filled with data/notes going back YEARS.

The pencil (and paper) is where I start when designing anything. It could be a program to solve a customer’s problem, a bookshelf that I plan to build, even a remodel of a kitchen. The best part is NO BATTERIES REQUIRED.. NO POWER CORD.. all the power required is ME! PLUS it is Mobile 😉

We tend to rely way too much on technology but I believe our best ideas come from just simply putting a Number 2 Yellow Pencil in our hand.. take a piece of paper.. and dream.

Oh yes, my favorite Yellow Number 2 is made by the largest wood pencil maker in the world – Dixon Ticonderoga – over 1.5 BILLION made every year!

, ,

Leave a comment

Why Do In-Active Users Show Up On My Leader Lookups?

There are two forms/views in SalesLogix Windows/LAN that are Activity/History related – the Create Activity (Activity Details View form) and the Complete Activity (History Details View form). The 2nd form is also used to insert/edit the Notes-History records as well.

Normally the “Leader” lookup is populated with the name/Id of the current user and that is teh end of it. However, in normal business operations/workflow there are times when the current user is scheduling/completing, etc. an Activity (or adding a note-history record) for someone else. So you simply click on the lookup and pick that user and away you go – or do you?

It turns out there is a bit of built-in set of “rules” that govern just what you get to choose from… and here is that rule:
“You can ONLY choose a user to be an Activity User IF you have access to their calendar”
Now back to the subject of this post… “Why do in-active users show up on me Leader Lookups” .. simple.. when you retired the user you did not remove calendar access to them from other (active) users.

This short blog was inspired by one of our customers (Thank You Patti!) when she sent me an email asking just that. They have had SalesLogix for a long time and have had users come and go. Theirs is a business where just about every SalesLogix user can “see” just about all the other user calendars. More than likely none of the retired were ever removed from the Active user(s) calendars. A quick cleanup (via the admin – user profile – Calendar tab) will correct that situation.

Here is a GREAT take-away:
Oh yes, it happens that there is also a custom MainView (not implemented by us 😉 that has it’s own custom dialog for Activity scheduling. It “happens” to have a lookup that is used to pick a “leader” and the calendar clean-up did not fix it.. and why you ask?.. Well it has to do with the LookupMode property of the lookup control. The two (2) OOTB (Out Of The Box) forms using Leader (lookup) have it set to lmCalendarUser – the custom is simply lmTable. A quick edit or two (changing it to lmCalendarUser) and now the problem is solved!

,

Leave a comment