DS -> onduplicate

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

DS -> onduplicate

Marc Pinnell-3
Struggling with Ke's wonderful DS system in regards to updates if key exists structure. I want to update an existing row and if not there, create a new one. What I am currently using (that needs to be changed):

site_ds->keycolumn('refassign_Key')
        ->addrow(::games_refs,
        map(
                ::refassign_Key = lasso_uniqueid,
                ::gameID = ...something from form...,
                ::ctr = ...something from form...,
                ::ar1 = ...something from form...,
                ::ar2 = ...something from form...,
                ::mentor = ...something from form...
        )
)

What I am struggling with is where the "->onduplicate(true)" gets inserted. OR can it even be used in this structure (I know the key structure will need to be changed a bit)?

Tried adding it in place of the ->addrow. Tried before the ->addrow. But lasso just throws a Definition Not Found: ds->onduplicate

Help!

marc


Marc Pinnell
1027 Design
PO Box 990872
Redding, CA 96099-0872
530.941.4706
fax: 866.232.5300
www.1027Design.com



#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

stevepiercy
I scanned the docs, found that you need to create an
insert_statement object first, then use the methods on the
object.  Try this untested example.

     #ds->insert->into(::mytable)
         ->columns(::description,::price)
         ->addrow(
             map(
                 ::notthere = 'OK',
                 ::price = 9.95
                 ::description='from a map',
             )
         )
         ->onduplicate(true)  // added this line from the
example in the docs.
         ->do

See:
https://github.com/Zeroloop/ds/wiki/Active-Statements#insert-statements--insert_statement

--steve


On 3/26/16 at 1:48 PM, [hidden email] (Marc
Pinnell) pronounced:

>Struggling with Ke's wonderful DS system in regards to updates
>if key exists structure. I want to update an existing row and
>if not there, create a new one. What I am currently using (that
>needs to be changed):
>
>site_ds->keycolumn('refassign_Key')
>->addrow(::games_refs,
>map(
>::refassign_Key =   lasso_uniqueid,
>::gameID    =   ...something from form...,
>::ctr       =   ...something from form...,
>::ar1       =   ...something from form...,
>::ar2       =   ...something from form...,
>::mentor    =   ...something from form...
>)
>)
>
>What I am struggling with is where the "->onduplicate(true)"
>gets inserted. OR can it even be used in this structure (I know
>the key structure will need to be changed a bit)?
>
>Tried adding it in place of the ->addrow. Tried before the
>->addrow. But lasso just throws a Definition Not Found: ds->onduplicate
>
>Help!
>
>marc
>
>
>Marc Pinnell
>1027 Design
>PO Box 990872
>Redding, CA 96099-0872
>530.941.4706
>fax: 866.232.5300
>www.1027Design.com
>
>
>
>#############################################################
>
>This message is sent to you because you are subscribed to
>the mailing list Lasso [hidden email]
>Official list archives available at http://www.lassotalk.com
>To unsubscribe, E-mail to: <[hidden email]>
>Send administrative queries to  <[hidden email]>

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Steve Piercy              Website Builder              Soquel, CA
<[hidden email]>               <http://www.StevePiercy.com/>


#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

Ke Carlton-3
Yep; pretty much as Steve says although you don't need to specify the
columns, it will work that out from the map. You can also specify what
columns to update in the onduplicate method as opposed to just updating all
with true.

Ke
On Sun, 27 Mar 2016 at 10:36 Steve Piercy - Website Builder <
[hidden email]> wrote:

> I scanned the docs, found that you need to create an
> insert_statement object first, then use the methods on the
> object.  Try this untested example.
>
>      #ds->insert->into(::mytable)
>          ->columns(::description,::price)
>          ->addrow(
>              map(
>                  ::notthere = 'OK',
>                  ::price = 9.95
>                  ::description='from a map',
>              )
>          )
>          ->onduplicate(true)  // added this line from the
> example in the docs.
>          ->do
>
> See:
>
> https://github.com/Zeroloop/ds/wiki/Active-Statements#insert-statements--insert_statement
>
> --steve
>
>
> On 3/26/16 at 1:48 PM, [hidden email] (Marc
> Pinnell) pronounced:
>
> >Struggling with Ke's wonderful DS system in regards to updates
> >if key exists structure. I want to update an existing row and
> >if not there, create a new one. What I am currently using (that
> >needs to be changed):
> >
> >site_ds->keycolumn('refassign_Key')
> >->addrow(::games_refs,
> >map(
> >::refassign_Key =   lasso_uniqueid,
> >::gameID    =   ...something from form...,
> >::ctr       =   ...something from form...,
> >::ar1       =   ...something from form...,
> >::ar2       =   ...something from form...,
> >::mentor    =   ...something from form...
> >)
> >)
> >
> >What I am struggling with is where the "->onduplicate(true)"
> >gets inserted. OR can it even be used in this structure (I know
> >the key structure will need to be changed a bit)?
> >
> >Tried adding it in place of the ->addrow. Tried before the
> >->addrow. But lasso just throws a Definition Not Found: ds->onduplicate
> >
> >Help!
> >
> >marc
> >
> >
> >Marc Pinnell
> >1027 Design
> >PO Box 990872
> >Redding, CA 96099-0872
> >530.941.4706
> >fax: 866.232.5300
> >www.1027Design.com
> >
> >
> >
> >#############################################################
> >
> >This message is sent to you because you are subscribed to
> >the mailing list Lasso [hidden email]
> >Official list archives available at http://www.lassotalk.com
> >To unsubscribe, E-mail to: <[hidden email]>
> >Send administrative queries to  <[hidden email]>
>
> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> Steve Piercy              Website Builder              Soquel, CA
> <[hidden email]>               <http://www.StevePiercy.com/>
>
>
> #############################################################
>
> This message is sent to you because you are subscribed to
>   the mailing list Lasso [hidden email]
> Official list archives available at http://www.lassotalk.com
> To unsubscribe, E-mail to: <[hidden email]>
> Send administrative queries to  <[hidden email]>
>

#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

Marc Pinnell-3
Thanks guys. After much fooling around I finally groked the need for the insert statement approach. Then I just had to figure out how to make it work! :) Got it working now. Thanks for the tip on the columns, makes it at least look prettier! :)

Marc


On Mar 26, 2016, at 3:15 PM, Ke Carlton <[hidden email]> wrote:

> Yep; pretty much as Steve says although you don't need to specify the
> columns, it will work that out from the map. You can also specify what
> columns to update in the onduplicate method as opposed to just updating all
> with true.
>
> Ke
> On Sun, 27 Mar 2016 at 10:36 Steve Piercy - Website Builder <
> [hidden email]> wrote:
>
>> I scanned the docs, found that you need to create an
>> insert_statement object first, then use the methods on the
>> object.  Try this untested example.
>>
>>     #ds->insert->into(::mytable)
>>         ->columns(::description,::price)
>>         ->addrow(
>>             map(
>>                 ::notthere = 'OK',
>>                 ::price = 9.95
>>                 ::description='from a map',
>>             )
>>         )
>>         ->onduplicate(true)  // added this line from the
>> example in the docs.
>>         ->do
>>
>> See:
>>
>> https://github.com/Zeroloop/ds/wiki/Active-Statements#insert-statements--insert_statement
>>
>> --steve
>>
>>
>> On 3/26/16 at 1:48 PM, [hidden email] (Marc
>> Pinnell) pronounced:
>>
>>> Struggling with Ke's wonderful DS system in regards to updates
>>> if key exists structure. I want to update an existing row and
>>> if not there, create a new one. What I am currently using (that
>>> needs to be changed):
>>>
>>> site_ds->keycolumn('refassign_Key')
>>> ->addrow(::games_refs,
>>> map(
>>> ::refassign_Key =   lasso_uniqueid,
>>> ::gameID    =   ...something from form...,
>>> ::ctr       =   ...something from form...,
>>> ::ar1       =   ...something from form...,
>>> ::ar2       =   ...something from form...,
>>> ::mentor    =   ...something from form...
>>> )
>>> )
>>>
>>> What I am struggling with is where the "->onduplicate(true)"
>>> gets inserted. OR can it even be used in this structure (I know
>>> the key structure will need to be changed a bit)?
>>>
>>> Tried adding it in place of the ->addrow. Tried before the
>>> ->addrow. But lasso just throws a Definition Not Found: ds->onduplicate
>>>
>>> Help!
>>>
>>> marc
>>>
>>>
>>> Marc Pinnell
>>> 1027 Design
>>> PO Box 990872
>>> Redding, CA 96099-0872
>>> 530.941.4706
>>> fax: 866.232.5300
>>> www.1027Design.com
>>>
>>>
>>>
>>> #############################################################
>>>
>>> This message is sent to you because you are subscribed to
>>> the mailing list Lasso [hidden email]
>>> Official list archives available at http://www.lassotalk.com
>>> To unsubscribe, E-mail to: <[hidden email]>
>>> Send administrative queries to  <[hidden email]>
>>
>> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>> Steve Piercy              Website Builder              Soquel, CA
>> <[hidden email]>               <http://www.StevePiercy.com/>
>>
>>
>> #############################################################
>>
>> This message is sent to you because you are subscribed to
>>  the mailing list Lasso [hidden email]
>> Official list archives available at http://www.lassotalk.com
>> To unsubscribe, E-mail to: <[hidden email]>
>> Send administrative queries to  <[hidden email]>
>>
>
> #############################################################
>
> This message is sent to you because you are subscribed to
>  the mailing list Lasso [hidden email]
> Official list archives available at http://www.lassotalk.com
> To unsubscribe, E-mail to: <[hidden email]>
> Send administrative queries to  <[hidden email]>

Marc Pinnell
1027 Design
PO Box 990872
Redding, CA 96099-0872
530.941.4706
fax: 866.232.5300
www.1027Design.com



#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

Jolle Carlestam-2
27 mars 2016 kl. 00:25 skrev Marc Pinnell <[hidden email]>:
>
> Thanks guys. After much fooling around I finally groked the need for the insert statement approach. Then I just had to figure out how to make it work! :) Got it working now. Thanks for the tip on the columns, makes it at least look prettier! :)

Good that you have it working. And amazing that Ke’s managed to tool DS for allowing things like onduplicate.
My 0.5 cents to the matter now that it’s solved is that since DS will convert the call to sql anyhow I find it simpler and more efficient to craft the SQL myself if it’s anything more complicated than a plan get, add or update.

First test and tune the SQL query in Navicat and then send it to DS with the dynamic parts inserted into it.

HDB
Jolle

#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

Ke Carlton-3
Have to disagree with you here; I exclusively use active statements now —
from simple queries to complex select statements with joins, calculations
and groupings. Overall they are far more flexible and easier to work with.

For example, this:

local(sql) = myds->table(::products)
->maxrows(50)
->where(::status = 1)

#id       ? #sql->where(::id = #id)
#ids      ? #sql->where(::id = #ids)
#brand    ? #sql->where(::brand = #brand)
#keywords ? #sql->where(
' MATCH keywords AGAINST ("' + #keywords->encodesql + '" IN BOOLEAN MODE)'
)
#skip     ? #sql->limit(#skip,50)

return #sql->rows


This is far more manageable than something like this:

local(sql) = 'SELECT * FROM products WHERE status = 1'

#id       ? #sql->append(' AND id = "' + #id->encodesql + '"')
#ids      ? #sql->append(
' AND id IN "' + (with id in #ids select
#id->encodesql)->asstaticarray->join(',') + '"'
)
#brand    ? #sql->append(' AND brand = "' + #brand->encodsql + '"')
#keywords ? #sql->append(
' AND MATCH keywords AGAINST ("' + #keywords->encodesql + '" IN BOOLEAN
MODE)'
)
#skip     ? #sql->append(' LIMIT ' + #skip->asinteger + ', 50)

return mysql->sql(#sql)->rows


In short; as soon as some form of dynamism is involved they've covered any
initial cost.

Ke

On Sun, Mar 27, 2016 at 8:59 PM Jolle Carlestam <[hidden email]> wrote:

> 27 mars 2016 kl. 00:25 skrev Marc Pinnell <[hidden email]>:
> >
> > Thanks guys. After much fooling around I finally groked the need for the
> insert statement approach. Then I just had to figure out how to make it
> work! :) Got it working now. Thanks for the tip on the columns, makes it at
> least look prettier! :)
>
> Good that you have it working. And amazing that Ke’s managed to tool DS
> for allowing things like onduplicate.
> My 0.5 cents to the matter now that it’s solved is that since DS will
> convert the call to sql anyhow I find it simpler and more efficient to
> craft the SQL myself if it’s anything more complicated than a plan get, add
> or update.
>
> First test and tune the SQL query in Navicat and then send it to DS with
> the dynamic parts inserted into it.
>
> HDB
> Jolle
>
> #############################################################
>
> This message is sent to you because you are subscribed to
>   the mailing list Lasso [hidden email]
> Official list archives available at http://www.lassotalk.com
> To unsubscribe, E-mail to: <[hidden email]>
> Send administrative queries to  <[hidden email]>

#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

decorior
Interesting, i can see the benefit. Do you have some examples of complex joins or are they in the docs?

Deco


> On Mar 27, 2016, at 4:17 PM, Ke Carlton <[hidden email]> wrote:
>
> Have to disagree with you here; I exclusively use active statements now —
> from simple queries to complex select statements with joins, calculations
> and groupings. Overall they are far more flexible and easier to work with.
>
> For example, this:
>
> local(sql) = myds->table(::products)
> ->maxrows(50)
> ->where(::status = 1)
>
> #id       ? #sql->where(::id = #id)
> #ids      ? #sql->where(::id = #ids)
> #brand    ? #sql->where(::brand = #brand)
> #keywords ? #sql->where(
> ' MATCH keywords AGAINST ("' + #keywords->encodesql + '" IN BOOLEAN MODE)'
> )
> #skip     ? #sql->limit(#skip,50)
>
> return #sql->rows
>
>
> This is far more manageable than something like this:
>
> local(sql) = 'SELECT * FROM products WHERE status = 1'
>
> #id       ? #sql->append(' AND id = "' + #id->encodesql + '"')
> #ids      ? #sql->append(
> ' AND id IN "' + (with id in #ids select
> #id->encodesql)->asstaticarray->join(',') + '"'
> )
> #brand    ? #sql->append(' AND brand = "' + #brand->encodsql + '"')
> #keywords ? #sql->append(
> ' AND MATCH keywords AGAINST ("' + #keywords->encodesql + '" IN BOOLEAN
> MODE)'
> )
> #skip     ? #sql->append(' LIMIT ' + #skip->asinteger + ', 50)
>
> return mysql->sql(#sql)->rows
>
>
> In short; as soon as some form of dynamism is involved they've covered any
> initial cost.
>
> Ke
>
> On Sun, Mar 27, 2016 at 8:59 PM Jolle Carlestam <[hidden email]> wrote:
>
>> 27 mars 2016 kl. 00:25 skrev Marc Pinnell <[hidden email]>:
>>>
>>> Thanks guys. After much fooling around I finally groked the need for the
>> insert statement approach. Then I just had to figure out how to make it
>> work! :) Got it working now. Thanks for the tip on the columns, makes it at
>> least look prettier! :)
>>
>> Good that you have it working. And amazing that Ke’s managed to tool DS
>> for allowing things like onduplicate.
>> My 0.5 cents to the matter now that it’s solved is that since DS will
>> convert the call to sql anyhow I find it simpler and more efficient to
>> craft the SQL myself if it’s anything more complicated than a plan get, add
>> or update.
>>
>> First test and tune the SQL query in Navicat and then send it to DS with
>> the dynamic parts inserted into it.
>>
>> HDB
>> Jolle
>>
>> #############################################################
>>
>> This message is sent to you because you are subscribed to
>>  the mailing list Lasso [hidden email]
>> Official list archives available at http://www.lassotalk.com
>> To unsubscribe, E-mail to: <[hidden email]>
>> Send administrative queries to  <[hidden email]>
>
> #############################################################
>
> This message is sent to you because you are subscribed to
>  the mailing list Lasso [hidden email]
> Official list archives available at http://www.lassotalk.com
> To unsubscribe, E-mail to: <[hidden email]>
> Send administrative queries to  <[hidden email]>


#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

Ke Carlton-3
Sure:

local(sql) = myds->select(
::t1.column,
::t2.another,
'SUM(t3.col) as total'
)
->from(`
table1 as t1
INNER JOIN table2 t2 ON t1.id = t2.parent_id
INNER JOIN table3 t3 ON t2.id = t3.parent_id
`)
->where(
::t1.status = 1,
::t2.status = 1,
't3.col > 0'
)

#another ? #sql->where(::t2.another = #another)

#groupby ? #sql->groupby(#groupby)

#orderby ? #sql->orderby(#orderby)

#skip ? #sql->limit(#skip,50)

// Return the statement generated
#sql->statement

// Count the total number of rows
#sql->count

// Get the rows
#sql->rows

As you can see you can mix and match straight SQL with pairs. So were using
SQL for the SUM column and also as one of the where filters.

Ke


On Mon, Mar 28, 2016 at 12:08 PM deco rior <[hidden email]>
wrote:

> Interesting, i can see the benefit. Do you have some examples of complex
> joins or are they in the docs?
>
> Deco
>
>

#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

Marc Pinnell-3
Maybe it's because I haven't tried to use active statements yet (or not enough), but to me this seems more readable.

$SQLParams = 'SELECT g.games_key, g.gamedatetime, g.hometeam, g.homescore, g.awayteam, g.awayscore, g.confirmed, f.fieldname, f.googlemarker, '
$SQLParams->append('(SELECT CONCAT(org_name, " ", teamname) FROM teams JOIN orgs ON teams.homeleagueid = orgs.org_key WHERE team_key = g.hometeam) AS home, ')
$SQLParams->append('(SELECT CONCAT(org_name, " ", teamname) FROM teams JOIN orgs ON teams.homeleagueid = orgs.org_key WHERE team_key = g.awayteam) AS away ')
$SQLParams->append('FROM games as g ')
$SQLParams->append('JOIN code_fields AS f ON g.gamelocation = f.fields_key ')
$SQLParams->append('WHERE g.eventid = "' + encode_sql($eventID) + '" AND g.div = "' + encode_sql($agegroup) + '" ')
$SQLParams->append('ORDER BY gamedatetime, f.fieldname;')

// Teams
$SQLParams->append('SELECT team_key, CONCAT(org_name, " ", teamname) AS teamname, contactname, eaddress, twins, tlosses, tties, tga, tgf, flight, ')
$SQLParams->append('(((twins*3)+tties)/((twins+tlosses+tties)*3)) AS twinperc ')
$SQLParams->append('FROM teams ')
$SQLParams->append('JOIN orgs ON teams.homeleagueid = orgs.org_key ')
$SQLParams->append('WHERE eventid = "' + encode_sql($eventID) + '" AND divid = "' + encode_sql($agegroup) + '" ')
$SQLParams->append('ORDER BY flight, teamname;')

local(
        results = site_ds->sql($SQLParams)->results,
        games = #results->get(1),
        teams = #results->get(2)
        )

With that said, I can also see where the active statement ability to easily pull the rows, counts, statement, etc would be helpful over the above approach. One thing I struggled with over the weekend with the active statement ->onDuplicate was the writing of the NULL to any columns that were not otherwise addressed. That was causing fields that already had data to be overwritten with NULL...

Marc


On Mar 27, 2016, at 8:48 PM, Ke Carlton <[hidden email]> wrote:

> Sure:
>
> local(sql) = myds->select(
> ::t1.column,
> ::t2.another,
> 'SUM(t3.col) as total'
> )
> ->from(`
> table1 as t1
> INNER JOIN table2 t2 ON t1.id = t2.parent_id
> INNER JOIN table3 t3 ON t2.id = t3.parent_id
> `)
> ->where(
> ::t1.status = 1,
> ::t2.status = 1,
> 't3.col > 0'
> )
>
> #another ? #sql->where(::t2.another = #another)
>
> #groupby ? #sql->groupby(#groupby)
>
> #orderby ? #sql->orderby(#orderby)
>
> #skip ? #sql->limit(#skip,50)
>
> // Return the statement generated
> #sql->statement
>
> // Count the total number of rows
> #sql->count
>
> // Get the rows
> #sql->rows
>
> As you can see you can mix and match straight SQL with pairs. So were using
> SQL for the SUM column and also as one of the where filters.
>
> Ke
>
>
> On Mon, Mar 28, 2016 at 12:08 PM deco rior <[hidden email]>
> wrote:
>
>> Interesting, i can see the benefit. Do you have some examples of complex
>> joins or are they in the docs?
>>
>> Deco
>>
>>
>
> #############################################################
>
> This message is sent to you because you are subscribed to
>  the mailing list Lasso [hidden email]
> Official list archives available at http://www.lassotalk.com
> To unsubscribe, E-mail to: <[hidden email]>
> Send administrative queries to  <[hidden email]>

Marc Pinnell
1027 Design
PO Box 990872
Redding, CA 96099-0872
530.941.4706
fax: 866.232.5300
www.1027Design.com



#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
Reply | Threaded
Open this post in threaded view
|

Re: DS -> onduplicate

stevepiercy
On 3/28/16 at 7:32 AM, [hidden email] (Marc
Pinnell) pronounced:

>One thing I struggled with over the weekend with the active
>statement ->onDuplicate was the writing of the NULL to any
>columns that were not otherwise addressed. That was causing
>fields that already had data to be overwritten with NULL...

As Ke said earlier:
http://lasso.2283332.n4.nabble.com/DS-onduplicate-tp4644999p4645001.html

Don't use ->onduplicate(true) in the first example.  Use one of
the other examples instead:
https://github.com/Zeroloop/ds/wiki/Active-Statements#on-duplicate-key-update

--steve

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Steve Piercy              Website Builder              Soquel, CA
<[hidden email]>               <http://www.StevePiercy.com/>


#############################################################

This message is sent to you because you are subscribed to
  the mailing list Lasso [hidden email]
Official list archives available at http://www.lassotalk.com
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>