El Sáb 07 Feb 2004 02:28, escribió:
> Mr. Alfredo
>     Pls, will you give the complete structure as 'create query' of your
> database? that will help us to solve your problem.
> Pradap

This is the structure of the table that holds the sequential numbers for 
various documents that need them:

CREATE TABLE `invcorr` (
  `empresa` tinyint(2) unsigned zerofill NOT NULL default '00',
  `tienda` tinyint(2) unsigned zerofill NOT NULL default '00',
  `ultfac` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultfaccred` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultconsig` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultdev` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultped` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ulting` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultapar` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultcoti` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ulttras` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultreq` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `ultajus` bigint(9) unsigned zerofill NOT NULL default '000000000',
  `timestamp` timestamp(14) NOT NULL,
  `usuario` varchar(20) default NULL,
  PRIMARY KEY  (`empresa`,`tienda`)
) TYPE=MyISAM; 

The condensed extract of the C program tha does the locking is as follows:

                SQLinst = "lock tables invcorr write, invfacturas write";
                state = mysql_query(connection, SQLinst);
                if(state != 0)
                {
                        wxMessageBox(mysql_error(&mysql), "Error:", wxOK | 
wxICON_EXCLAMATION, 
this);
                        wxMessageBox(_("Could not lock table!"), _("Error:"), wxOK | 
wxICON_EXCLAMATION, this);
                        return;
                }
                SQLinst = "select ultfac from invcorr where empresa='"
                        + sCodigoEmp
                        + "' and tienda='"
                        + sFacTienda
                        + "' order by tienda";
                state = mysql_query(connection, SQLinst);
                result = mysql_store_result(connection);
                if(mysql_num_rows(result) != 0) // Tiene registros
                {
                        while((row = mysql_fetch_row(result)) != NULL)
                        {
                    // Asigno valores
                                sFacDocu = row[0] ? row[0] : "";
                        }
                }
                mysql_free_result(result);
                sFacDocu.ToDouble(&dFacDocu);
                dFacDocu++;
                sFacDocu.Printf("%09.0f", dFacDocu);
                SQLinst = "update invcorr set ultfac='"
                        + sFacDocu
                        + "' where empresa='"
                        + sCodigoEmp
                        + "' and tienda='"
                        + sFacTienda + "'";
                state = mysql_query(connection, SQLinst);
                SQLinst = "unlock tables";
                state = mysql_query(connection, SQLinst);

This final update is what seems to sleep and not react inmediately. The 
application resides in one central server with dual Xeon 2.8 Ghz CPU's and 6 
Gb RAM. All users run the application at the server connecting either via 
ssh, VNC or Linux Terminal Server Project.

During the day, I will get 3 or 4 duplicate numbers per store. Given the fact 
that reporting sales tax received, depends on a correct sequence of invoices, 
my company could get into big trouble if authorities think we are trying to 
avoid sales tax reporting.

Thank you for your help.

-- 
Alfredo J. Cole
[EMAIL PROTECTED]
[EMAIL PROTECTED]


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to