Ir ao conteúdo
  • Cadastre-se

Chave primária - banco de dados


Milk Shake

Posts recomendados

Eu estou desenvolvendo um banco de dados mas a chave primaria está dando erro, ela verifica  se codigo ja foi inserido e armazena ele mas se eu faço um cadastro e depois cadastro outro codigo e cadastro novamente o primeiro codigo ele "esquece" que o primeiro ja foi salvo quando na vdd deveria avisar que ele ja foi cadastrado. Vocês podem me ajudar por favor?

 

void salvar_cadastro()
{
    fp=fopen("cadastro.bin","ab");
    fwrite(&id.chave,sizeof(id.chave),1,fp);
    fwrite(&id.nome,sizeof(id.nome),1,fp);
    fwrite(&id.endereco,sizeof(id.endereco),1,fp);
    fwrite(&id.excluido,sizeof(id.excluido),1,fp);
    fclose(fp);
}

 

void salvar()
{
    char salva;
    gotoxy (10,7); printf("Deseja salvar cadastro? ('s'/ 'n'): ");
    gotoxy (46,7); salva=getche();
    
    if (salva =='s' || salva=='S')
    {
        fp=fopen("cadastro.bin","ab");
        fwrite(&id.chave,sizeof(id.chave),1,fp);
        fwrite(&id.nome,sizeof(id.nome),1,fp);
        fwrite(&id.endereco,sizeof(id.endereco),1,fp);
        fwrite(&id.excluido,sizeof(id.excluido),1,fp);
        fclose(fp);
        gotoxy(10,10); printf("Dados salvos com sucesso!");
    }
    if (salva == 'n'||salva == 'N')
    {
        gotoxy(10,10); printf("Dados não salvo!");
    }
    
    gotoxy(14,4); clreol();
    gotoxy(16,5); clreol();
    gotoxy(20,6); clreol();
    gotoxy(46,7); clreol();
}

 

int chave_primaria() // verifica se o ID ja não existe
{
    int C, aux_chave;
    do
    {
        C=0;
        gotoxy (14,4); scanf("%d", &aux_chave);
        if (aux_chave == 0)
            break;
        
        while(fread( &id,sizeof(id),1,fp) == 1 && id.chave != aux_chave );
         
        if( id.chave == aux_chave && (id.excluido=='n' || id.excluido=='N'))
        {
            fflush(stdin);
            gotoxy(10,11); printf("ID já registrado!  Digite novamente");
            getch();
            gotoxy(10,11);clreol();
            gotoxy(14,4);printf("          ");
            C=1;
        }
    }while(C==1);
    return aux_chave;
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...