Ir para conteúdo
Fórum Script Brasil

Gaabi Motta

Membros
  • Total de itens

    17
  • Registro em

  • Última visita

Posts postados por Gaabi Motta

  1. veja como usar o autoincremento

    Jhonas, eu sei como usar um auto incremento , o problema é o seguinte,

    Vamos dizer que eu tenha salvo em minha tabela temporaria 4 itens, aperto o botao gravar esses itens são jogados pra a tabela de origem e a tabela temporaria fica vazia.

    quando eu dou um novo registro , seleciona mais 4 itens e jogo na temp, só que ao invés de salvar apartir do ID 5, ela volta a salvar como 1,2,3,4. Na hora em que eu gravo , da erro de violação de chave primaria.

    Bom no sql eu consigo realizar isso , pois quando eu do um delete na tabela, ela não reinicia no cod 1, e sim onde parou. Por exemplo , 5. Já o firebird não faz isso !

  2. Pessoal estou com um problema com o auto incremento em tabelas do Firebird (IBExpert), vou explicar o que está acontecendo:

    Tenho uma tabela ItensVendas e uma ItensVendasTEMP, o usuário adiciona itens na ItensVendasTEMP e após inserir todos os itens ele finaliza a venda (neste momento é executada uma Stored Procedure no Firebird, que grava os itens da tabela ItensVendasTEMP para a ItensVendas e depois realiza um delete na ItensVendasTEMP).

    O que acontece: Após eu realizar um delete o auto-incremento da ItensVendasTEMP começa a contar do 1, e na proxima vez que eu for gravar os registros na ItensVendas ocorre "violação de chave", pois ela já possui estes valores.

    Exemplo:

    ItensVendaTemp: (depois de executar a procedure que grava e depois deleta)

    Cod Produto

    1 Coca-cola

    2 Cachorro quente

    3 Mouse

    ItensVenda (Observem que esta tabela já possui os valores Codigo gerados na venda anterior)

    Cod Produto

    1 Placa-mãe PCChips

    2 Processador Intel

    3 Banana

    Espero ter explicado bem detalhadamente, mas resumindo é o sequinte:

    Mesmo deletando os registros da tabela temporária preciso manter o campo CÒDIGO na mesma sequência.

    (no SQL 2000 mesmo ao apagar todos os registros, ao inserir outro, ele segue a seqência do último apagado)

    alguém tem uma solução?

  3. Bom esse probleminha eu resolvi, só que a na tabela "itensChamado"" eu tenho um campo chamado "CODCHAMADO" que esta relacionado com a chave primária da Tabela Chamados, só que quando eu vou inserir um registro na tabela itensChamados (inserir o codigo do cahamado) ocorre um erro de violação de chave estrangeira, eu sei que este erro acontece por que estou inserindo uma chave estrangeira que ainda não foi gravada, tem como resolver isso?

    alguém , por um acaso poderia me ajudar !

    Obrigada .

  4. só que quando eu gravo , ele gera um codigo já existente.

    por isso ocorre o erro de violação de chave, pois existe registro duplicado ...

    exemplo:

    cdsItensChamadoTempCODITENSCHAMADO.AsInteger;

    se este for o campo que voce definiu para ser chave primária, o valor deve ser somado de 1, para que não ocorram valores iguais, quando for salvar o registro.

    abraço

    Bom esse probleminha eu resolvi, só que a na tabela "itensChamado"" eu tenho um campo chamado "CODCHAMADO" que esta relacionado com a chave primária da Tabela Chamados, só que quando eu vou inserir um registro na tabela itensChamados (inserir o codigo do cahamado) ocorre um erro de violação de chave estrangeira, eu sei que este erro acontece por que estou inserindo uma chave estrangeira que ainda não foi gravada, tem como resolver isso?

  5. Bom , o meu codigo é este:

    procedure TFRM_CadastroChamados.Button2Click(Sender: TObject);

    var Defeito : String;

    begin

    inherited;

    SQlChamadoItensChamadoCODITENSCHAMADO.AsInteger := Chamados.ProximoRegistroItemChamado;

    cdsItensChamadoTemp.Append;

    cdsItensChamadoTempCODITENSCHAMADO.AsInteger := Chamados.ProximoRegistroItemChamado;

    cdsItensChamadoTempCODCHAMADO.AsInteger := StrToInt(edtCodigo.Text);

    cdsItensChamadoTempCODITEMEQPTO.AsInteger := cbbItemEquipamento.KeyValue;

    cdsItensChamadoTempDEFEITOITEM.Value := InputBox('Digite o defeito:','Defeito','');

    cdsItensChamadoTemp.Post;

    cdsItensChamado.ApplyUpdates(0);

    cdsItensChamado.Close;

    cdsItensChamado.Open;

    dbgItemChamado.Refresh;

    end;

    só que quando eu gravo , ele gera um codigo já existente.

  6. Estou realizando um projeto, e preciso de ajuda, tenha dois grids em um mesmo form, só que um pertence a uma tabela, que é secundaria do outro grid. Por exemplo , tenho a tabela vendas, itens, e itens venda. no meu form itens venda, eu seleciono na combo a minha venda, e depois no grid itens, escolho qual(is) item(s) esta venda possui, clico no botao, e adiciono no grid itens venda. Só que eu não posso adicionar o mesmo item mais de uma vez na mesma venda. Como faço?

×
×
  • Criar Novo...