Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   problema con zeosdb y mysql repite sentencias.. (https://www.clubdelphi.com/foros/showthread.php?t=91588)

elmago00 10-03-2017 03:49:36

problema con zeosdb y mysql repite sentencias..
 
Hola a todos...
Tengo un problema y agradecería mucho que me iluminaran.

Tengo una base datos en mysql, usando innodb.
Cuando hago inserciones en las tablas, me genera varios registros.
A veces me genera hasta 30 registros de una. Sola consulta..


Código SQL [-]
inserta into tabla1(fecha,nombre)values(valor1,valor2)
Me lo insertar varias veces..

Pensamos que era la red de la empresa.. Por usan una router residencial para usar el sistema.
Y al principio se soluciono.. Ya que solo tenia un canal habilitado.
Los técnicos de redes le habilitaron 9 canales.
Las sentencias iban bien.. Pues los usuarios tenían mas "vías" .
Por unos días se soluciono..

Pero después volvió a repetirme sentencias..
No si es por que usan una red inalámbrica de poca capacidad o es un error de programación..:o

Pensamos en hacer " star transaction " y "commit" pero
El sistema lo usan varios usuarios al mismo tiempo.
Y al hacer eso les bloquearía. El acceso a las tablas..
Por que repito varios usuarios usan las mismas funciones..

Ayuda por favor...



El sistema es inmenso..
Muchos usuarios se conectan a los mismos módulos.

Casimiro Notevi 10-03-2017 11:36:02

Te explicas como un libro cerrado :p, mezclas cosas que no se entiende a qué vienen :confused:
Parece que básicamente, haces un insert y se crean varios registros iguales, ¿es eso?
Si es así, está claro que se está repetiendo la sentencia, pero el problema es que si se repiten las claves primarias es que no hay claves primarias... y entonces... mejor que te expliques más claramente porque es imposible así.
PD: Además, esa sentencia dará error, no es correcta su sintaxis.

noshy 10-03-2017 12:56:50

Pon por favor el codigo donde se encuentra la sentencia para verificarlo, leerlo y ver donde puede estar tu error, con los datos que das no podemos hacer nada.

elmago00 10-03-2017 17:25:33

El sistema esta en una red WAM
7 sucursales...

en algunas ocaciones cuando todos los usuarios estan usando el sistema..
7 en cada modulo.. aproximadamente.
genera el problema de repetir sentencias.. en algunas ocaciones... a eso hay que sumarle
que la consulta demora 5 segundos en ser ejecutada... no usan las normas de IT adecuadas..

un ejemplo de codigo es este..

Código SQL [-]
         Zquery1.Close;
                  Zquery1.SQL.Clear;
                   Zquery1.SQL.Add('INSERT INTO cuentabasica (Fecha,Tipo,No_Cuenta,Beneficiario,Debito,Credito,Descripción,Banco,ndoc)values('+#13+
                   char(39)+FCA+char(39)+','+char(39)+'DEP'+CHAR(39)+','+CHAR(39)+Edit11.Text+CHAR(39)+','+CHAR(39)+Edi  t1.Text+CHAR(39)+','+#13+
                       char(39)+vlor5+char(39)+','+char(39)+'0.00'+CHAR(39)+','+CHAR(39)+Edit4.Text+CHAR(39)+','+char(39)+E  dit2.Text+char(39)+','+#13+
                   char(39)+StringGRid1.Cells[1,1].ToLower+char(39)+')');
                      Zquery1.ExecSQL;
                        Zquery1.Close;

// esta a veces la repite hasta 40 veces



 for  ij := 1 to stringGrid2.RowCount -2 do
                     begin


           ZQuery1.Close;
         ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('insert into cuentasbasic(doc,Fecha,Cta_usuario,Nombre,Debito,Credito,Descripción) values('+#13+
    ':Cheque_No,:Fecha,:id_Cuenta,:Nombre,:Deb,:Hab,:Descripción)');




         ZQuery1.ParamByName('Cheque_No').AsString:=stringGrid2.Cells[0,  ij];
        ZQuery1.ParamByName('Fecha').AsString:=stringGrid2.Cells[1,  ij];
        ZQuery1.ParamByName('id_Cuenta').AsString:=stringGrid2.Cells[2,  ij];
        ZQuery1.ParamByName('Nombre').AsString:=stringGrid2.Cells[3,  ij];
        ZQuery1.ParamByName('Deb').AsString:=stringGrid2.Cells[4,  ij];
        ZQuery1.ParamByName('Hab').AsString:=stringGrid2.Cells[5,  ij];
        ZQuery1.ParamByName('Descripción').AsString:=stringGrid2.Cells[6,  ij];






    // ejecutarla
   ZQuery1.ExecSQL;
                    end;


// esta sentencia la repite hasta 120 veces.. siendo que el rowcount es de 10



esto solo es en ocaciones....
cuando el sistema es saturado de información...


La franja horaria es GMT +2. Ahora son las 19:55:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi