Solay 0 Denunciar post Postado Dezembro 8, 2005 Olá a todosEu tenho um sistema q uso Delphi 7, mysql e zeos, só q ele esta dando o seguinte erro:SQL ERROR: Lock wait timeout exceeded; try restarting transaction.Acho q estou usando de maneira errada as transações, se vcs puderem me ajudar agradeço.Ps: Já verifique a rede e está tudo certo.Solay Compartilhar este post Link para o post Compartilhar em outros sites
AbraaoRamiro 1 Denunciar post Postado Dezembro 9, 2005 Quando é que o erro acontece??? é quando você Executa a SQL ou quando tenta conectar as Tabelas???Se for na execução da SQL, Posta a Instrução SQL pra darmos uma olhada...Se for na conexão veja de o Servidor do Banco esta estartado coretamente, e se as verções são compativeis...Aguardamos resposta... Compartilhar este post Link para o post Compartilhar em outros sites
Solay 0 Denunciar post Postado Dezembro 9, 2005 Olá Abraao Ramiro O erro ocorre quando executo um delete ou um insert......ele não ocorre quando eu faço um select. Esse código é de um formulário de agenda para os médicos, então ele é executado a cada atualização da agenda e são 4 médicos consultando o dia todo e mais a recepção que marcas consultas e exames. procedure TFrmPrincipal.ParametrosTabela(Codigo:string;CodVinculo:string;Data:string); begin try if Dados.ZCnn.InTransaction = False then Dados.ZCnn.StartTransaction; with Dados.ZQry do begin SQL.Clear; SQL.Add('DELETE FROM TabParamRelatorios '); ExecSQL; end; Dados.ZCnn.Commit; except on Exc:Exception do begin ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + Exc.Message); Dados.ZCnn.Rollback; end; end; try if Dados.ZCnn.InTransaction = False then Dados.ZCnn.StartTransaction; with Dados.ZQry do begin SQL.Clear; SQL.Add('INSERT INTO TabParamRelatorios '); SQL.Add('(Codigo, DataInicial, CodVinculo)'); SQL.Add('VALUES(:Codigo, :DataInicial, :CodVinculo)'); ParamByName('codigo').Value := Codigo; ParamByName('DataInicial').Value:= FormatDateTime('yyyy/mm/dd',StrToDate(Data)); ParamByName('CodVinculo').Value := CodVinculo; ExecSQL; end; Dados.ZCnn.Commit; except on Exc:Exception do begin ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + Exc.Message); Dados.ZCnn.Rollback; end; end; end; procedure TFrmAgendaRecep.PopulaGridProced; var i,j,y: integer; Value: Integer; sql,Ordem,Medico:string; begin if LbDiaSemana.Caption ='domingo' then Ordem:= '1'; if LbDiaSemana.Caption ='segunda-feira' then Ordem:= '2'; if LbDiaSemana.Caption ='terça-feira' then Ordem:= '3'; if LbDiaSemana.Caption ='quarta-feira' then Ordem:= '4'; if LbDiaSemana.Caption ='quinta-feira' then Ordem:= '5'; if LbDiaSemana.Caption ='sexta-feira' then Ordem:= '6'; if LbDiaSemana.Caption ='sábado' then Ordem:= '7'; if LbDiaSemana.Caption ='Monday' then Ordem:= '2'; if LbDiaSemana.Caption ='Tuesday' then Ordem:= '3'; if LbDiaSemana.Caption ='Wednesday' then Ordem:= '4'; if LbDiaSemana.Caption ='Thursday' then Ordem:= '5'; if LbDiaSemana.Caption ='Friday' then Ordem:= '6'; if LbDiaSemana.Caption ='Saturday' then Ordem:= '7'; if LbDiaSemana.Caption ='Sunday' then Ordem:= '8'; Grid2.ColWidths[0]:=112; Grid2.ColWidths[1]:=49; Grid2.ColWidths[2]:=169; Grid2.ColWidths[3]:=109; Grid2.ColWidths[4]:=99; Grid2.ColWidths[5]:=99; Grid2.ColWidths[6]:=80; Grid2.ColWidths[7]:=-1; Grid2.ColWidths[8]:=-1; Grid2.ColWidths[9]:=-1; Grid2.ColWidths[10]:=-1; Grid2.Cells[0,0]:=''; Grid2.Cells[1,0]:=''; Grid2.Cells[2,0]:=''; Grid2.Cells[3,0]:=''; Grid2.Cells[4,0]:=''; Grid2.Cells[5,0]:=''; Grid2.Cells[6,0]:=''; Grid2.Cells[7,0]:=''; Grid2.Cells[8,0]:=''; Grid2.Cells[9,0]:='0'; Grid2.Cells[10,0]:=''; Grid2.Cells[0,1]:=''; Grid2.Cells[1,1]:=''; Grid2.Cells[2,1]:=''; Grid2.Cells[3,1]:=''; Grid2.Cells[4,1]:=''; Grid2.Cells[5,1]:=''; Grid2.Cells[6,1]:=''; Grid2.Cells[7,1]:=''; Grid2.Cells[8,1]:=''; Grid2.Cells[9,1]:='0'; Grid2.Cells[10,1]:=''; SelecionaMedico; if ((EdtCodmedico.Text ='') or (EdtCodmedico.text=null) or (EdtCodmedico.text='0') ) then begin Application.MessageBox('O campo Especialista é obrigatório, selecione um na lista.', 'Aviso do Sistema', MB_ICONSTOP + MB_OK); cbxmedico.SetFocus; exit; end; FrmPrincipal.ParametrosTabela('1', EdtCodMedico.text,LbData.text); Sql:='SELECT TabAgenda.Codigo, TabAgenda.Medico, TabAgenda.Data, TabAgenda.Hora, TabAgenda.Paciente, TabAgenda.CodPaciente, '; sql:=sql+' TabAgenda.Status, TabAgenda.Obs, TabAgenda.Convenio,TabAgenda.Exame,TabAgenda.Modalidade '; sql:=sql+' FROM TabParamRelatorios INNER JOIN TabAgenda on TabParamRelatorios.DataInicial = TabAgenda.Data '; sql:=sql+' ORDER BY TabAgenda.Medico,hora '; Dados.ZQryGeral.Active := False; Dados.ZQryGeral.SQL.Clear; Dados.ZQryGeral.SQL.Add(sql); Dados.ZQryGeral.Active:=true; if Feriado=false then begin if Dados.ZQryGeral.RecordCount<>0 then begin FrmPrincipal.ParametrosTabela('1', EdtCodMedico.text,LbData.text); Sql:='delete FROM tabtempagenda '; Dados.ZQry.SQL.Clear; Dados.ZQry.SQL.Clear; Dados.ZQry.SQL.Add(sql); Dados.ZQry.ExecSQL; try if Dados.ZCnn.InTransaction = False then Dados.ZCnn.StartTransaction; Sql:='INSERT INTO tabtempagenda (Codigo,CodMedico,Data,Hora,Paciente,CodPaciente,Telefone,Status,CodigoFunc, '; sql:=sql+' DataStatus,NomeFunc,CodModalidade,Obs,Modalidade,Convenio,CodConvenio,Exame,CodE xame,Medico) '; sql:=sql+' Select tabagenda.Codigo,tabagenda.CodMedico,tabagenda.Data,tabagenda.Hora,tabagenda.Pac iente, '; sql:=sql+' tabagenda.CodPaciente,tabagenda.Telefone,tabagenda.Status,tabagenda.CodigoFunc,t abagenda.DataStatus, '; sql:=sql+' tabagenda.NomeFunc,tabagenda.CodModalidade,tabagenda.Obs,tabagenda.Modalidade,ta bagenda.Convenio, '; sql:=sql+' tabagenda.CodConvenio,tabagenda.Exame,tabagenda.CodExame,tabagenda.Medico from tabagenda INNER JOIN '; sql:=sql+' TabParamRelatorios ON TabAgenda.Data=TabParamRelatorios.DataInicial '; Dados.ZQry.SQL.Clear; Dados.ZQry.SQL.Clear; Dados.ZQry.SQL.Add(sql); Dados.ZQry.ExecSQL; Dados.ZCnn.Commit; except on Exc:Exception do begin ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + Exc.Message); Dados.ZCnn.Rollback; end; end; try if Dados.ZCnn.InTransaction = False then Dados.ZCnn.StartTransaction; sql:='INSERT INTO tabtempagenda (CodMedico,Hora,Medico,Modalidade,CodExame,Exame) '; sql:=sql+' SELECT tabhorariosmed.codmedico, tabhorariosmed.horarios,TabMedicos.nome,tabhorariosmed.Tipo,tabhorariosmed.CodEx ame,Tabexames.Exame '; sql:=sql+' FROM tabhorariosmed INNER JOIN TabMedicos ON tabhorariosmed.CodMedico=TabMedicos.codigo LEFT OUTER JOIN tabtempagenda ON '; sql:=sql+'tabhorariosmed.CodMedico=Tabtempagenda.CodMedico and tabhorariosmed.horarios=Tabtempagenda.hora LEFT OUTER JOIN Tabexames ON tabhorariosmed.Codexame = Tabexames.Codigo'; Sql:=Sql+' Where tabhorariosmed.Ordem='+ Ordem +' and Tabtempagenda.hora is null'; Dados.ZQry.SQL.Clear; Dados.ZQry.SQL.Clear; Dados.ZQry.SQL.Add(sql); Dados.ZQry.ExecSQL; Dados.ZCnn.Commit; except on Exc:Exception do begin ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + Exc.Message); Dados.ZCnn.Rollback; end; end; Sql:='SELECT tabtempagenda.Codigo, tabtempagenda.Medico, tabtempagenda.Data, tabtempagenda.Hora, tabtempagenda.Paciente, tabtempagenda.CodPaciente, '; sql:=sql+' tabtempagenda.Status, tabtempagenda.Obs, tabtempagenda.Convenio,tabtempagenda.Exame,tabtempagenda.Modalidade,tabtempagend a.codmedico '; sql:=sql+' FROM tabtempagenda '; sql:=sql+' ORDER BY tabtempagenda.Medico,hora '; Dados.ZQryGeral2.Active := False; Dados.ZQryGeral2.SQL.Clear; Dados.ZQryGeral2.SQL.Add(sql); Dados.ZQryGeral2.Active:=true; Grid2.RowCount :=Dados.ZQryGeral2.RecordCount; Medico:=Dados.ZQryGeral2.Fields[11].AsString; Grid2.Cells [0,0]:= Dados.ZQryGeral2.Fields[01].AsString; Grid2.Cells [9,0]:='0'; y:=0; for i:=0 to Dados.ZQryGeral2.RecordCount-1 do begin Grid2.RowHeights:=16; if ((Medico=Dados.ZQryGeral2.Fields[11].AsString) and (i<>0)) then begin Grid2.Cells [0,i]:=''; Grid2.Cells [9,i]:= IntToStr(y); end else begin Grid2.Cells [0,i]:= Dados.ZQryGeral2.Fields[01].AsString; Medico:=Dados.ZQryGeral2.Fields[11].AsString; y:=y+1; Grid2.Cells [9,i]:= IntToStr(y); end; Grid2.Cells [1,i]:= FormatDateTime('hh:mm',Dados.ZQryGeral2.Fields[03].Asdatetime); Grid2.Cells [2,i]:= Dados.ZQryGeral2.Fields[04].AsString; if Dados.ZQryGeral2.Fields[10].AsString<>'EXAME' then Grid2.Cells [3,i]:= Dados.ZQryGeral2.Fields[10].AsString else Grid2.Cells [3,i]:= Dados.ZQryGeral2.Fields[09].AsString; Grid2.Cells [4,i]:= Dados.ZQryGeral2.Fields[08].asstring; Grid2.Cells [5,i]:= Dados.ZQryGeral2.Fields[07].asstring; Grid2.Cells [6,i]:= Dados.ZQryGeral2.Fields[06].AsString; Grid2.Cells [7,i]:= Dados.ZQryGeral2.Fields[00].AsString; Grid2.Cells [8,i]:= Dados.ZQryGeral2.Fields[11].AsString; Grid2.Cells [10,i]:= Dados.ZQryGeral2.Fields[05].AsString; if Length(Grid2.Cells [0,i])>17 then Grid2.RowHeights:=30; if Length(Grid2.Cells [2,i])>26 then Grid2.RowHeights:=30; if Length(Grid2.Cells [3,i])>15 then begin if Length(Grid2.Cells [3,i])>30 then Grid2.RowHeights:=40 else Grid2.RowHeights:=30; end; if Length(Grid2.Cells [5,i])>26 then Grid2.RowHeights:=30; if Length(Grid2.Cells [6,i])>14 then Grid2.RowHeights:=30; dados.ZQryGeral2.Next; end; Dados.ZQryGeral2.Active:=false; end else begin Sql:='SELECT tabhorariosmed.Codigo, tabhorariosmed.codmedico, tabhorariosmed.diasemana, tabhorariosmed.ordem,tabhorariosmed.horarios,'; Sql:=Sql+' TabMedicos.nome,tabhorariosmed.Tipo,Tabexames.Exame FROM tabhorariosmed INNER JOIN TabMedicos ON tabhorariosmed.CodMedico=TabMedicos.codigo LEFT OUTER JOIN Tabexames ON tabhorariosmed.Codexame = Tabexames.Codigo'; Sql:=Sql+' Where Ordem='+ Ordem +' ORDER BY TabMedicos.nome, Horarios'; Dados.ZQryGeral2.Active := False; Dados.ZQryGeral2.SQL.Clear; Dados.ZQryGeral2.SQL.Add(sql); Dados.ZQryGeral2.Active:=true; Grid2.RowCount :=Dados.ZQryGeral2.RecordCount; Medico:=Dados.ZQryGeral2.Fields[01].AsString; Grid2.Cells [0,0]:= Dados.ZQryGeral2.Fields[05].AsString; Grid2.Cells [9,0]:='0'; y:=0; for i:=0 to Dados.ZQryGeral2.RecordCount -1 do begin Grid2.RowHeights:=16; Grid2.Cells [0,i]:= Dados.ZQryGeral2.Fields[05].Asstring; Grid2.Cells [1,i]:= FormatDateTime('hh:mm',Dados.ZQryGeral2.Fields[04].Asdatetime); Grid2.Cells [2,i]:= ''; if Dados.ZQryGeral2.Fields[06].AsString<>'EXAME' then Grid2.Cells [3,i]:= Dados.ZQryGeral2.Fields[06].AsString else Grid2.Cells [3,i]:= Dados.ZQryGeral2.Fields[07].AsString; Grid2.Cells [4,i]:= ''; Grid2.Cells [5,i]:= ''; Grid2.Cells [6,i]:= ''; Grid2.Cells [7,i]:= ''; Grid2.Cells [8,i]:= Dados.ZQryGeral2.Fields[01].AsString; if ((Medico=Dados.ZQryGeral2.Fields[01].AsString) and (i<>0)) then begin Grid2.Cells [0,i]:=''; Grid2.Cells [9,i]:= IntToStr(y); end else begin Grid2.Cells [0,i]:= Dados.ZQryGeral2.Fields[05].AsString; Medico:=Dados.ZQryGeral2.Fields[01].AsString; y:=y+1; Grid2.Cells [9,i]:= IntToStr(y); end; if Length(Grid2.Cells [0,i])>17 then Grid2.RowHeights:=30; if Length(Grid2.Cells [3,i])>15 then begin if Length(Grid2.Cells [3,i])>30 then Grid2.RowHeights:=40 else Grid2.RowHeights:=30; end; dados.ZQryGeral2.Next; end; Dados.ZQryGeral2.Active:=false; end; end else begin Grid2.RowCount :=1; end; Dados.ZQryGeral.Active:=false; end; Obrigada pela ajuda..... Compartilhar este post Link para o post Compartilhar em outros sites
Wilton 0 Denunciar post Postado Dezembro 9, 2005 Vai aqui um conselho, já que não detectei qual o seu problema: eu sai do Zeus e fui para o ADO. Estou feliz da vida! Compartilhar este post Link para o post Compartilhar em outros sites