Fórum Alterar registros com MySQL - DBExpress #241685
21/04/2010
0
Francisco Sena
Curtir tópico
+ 0Posts
22/04/2010
Wilson Junior
Gostei + 0
22/04/2010
Francisco Sena
Dentro do sistema eu utilizei uns códigos que peguei no curso de uma aplicação financeira qutilizando mysql e delphi 2009, que fala sobre esse ID MySQL, mas, ele tá funcionando normalmente, o problema está só acontecendo quando clico em EDITAR um registro, pois no lugar de manter o mesmo ID, ele gera um novo ID e depois daí, ele não deixa mais cadastrar novos registros, pois dá Key Violation.
Qualquer coisa, se precisar, posto os códigos que fazem o auto-incremente, mas, resaltando, que não é essa parte que está com problema, é NA PARTE DE EDIÇÃO DO REGISTRO.
Gostei + 0
22/04/2010
Wilson Junior
Qualquer dúvida posta o código aí que tentamos lhe ajudar.
Gostei + 0
22/04/2010
Francisco Sena
Gostei + 0
22/04/2010
Wilson Junior
Pois não sei se você está gerando o ID diretamente no banco ou via código no Delphi. Coloque aqui para poder lhe ajudar.
Gostei + 0
22/04/2010
Francisco Sena
var
I: Integer;
begin
for I := 0 to ComponentCount - 1 do
if Components[I] is TClientDataSet then
begin
TClientDataSet(Components[I]).BeforePost := SetID;
end; end; function TDM.GetID(Table: String): Integer;
var
SqlQuery : TSQLQuery;
begin
SqlQuery := TSQLQuery.Create(Self);
SqlQuery.SQLConnection := SQLCon;
SqlQuery.SQL.Add('SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ' + QuotedStr(Table)); SqlQuery.Open; Result := SqlQuery.Fields[0].Value;
end; procedure TDM.SetID(DataSet: TDataSet);
begin
DataSet.Fields[0].Value := GetID('tbl' + copy(DataSet.Name, 4));
end; Conforme eu falei anteriormente, eu peguei esses códigos de um curso de aplicação financeira com delphi 2009 e mysql... Por favor, me dá essa forcinha, só está faltando essa parte para cocnluir a minha parte dos registros... Agradeço desde ja!
Gostei + 0
23/04/2010
Francisco Sena
Gostei + 0
23/04/2010
Wilson Junior
procedure TDM.SetID(DataSet: TDataSet);
begin
if TClientDataSet(DataSet).State = dsInsert then
DataSet.Fields[0].Value := GetID('tbl' + copy(DataSet.Name, 4))
;
end;
Espero ter colaborado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)