2017-10-18 16 views
-1
var 
    sName, sSurname, sUsername, sPassword, sPassword2: string; 
begin 
    sName:=edtName.Text; 
    sSurname:=edtSurname.Text; 
    sUsername:=edtUsername.Text; 
    sPassword:=edtPassword.Text; 
    sPassword2:=edtPassword2.Text; 
    if sPassword=sPassword2 then 
    with DataModule1 do 
    begin 
     tblLogInInfo.Open; 
     tblLogInInfo.Last; 
     while NOT tblLogInInfo.Eof do 
     begin 
      tblLogIniNfo.Insert; 
      tblLogInInfo.FieldByName('Name').Value:=sName; 
      tblLogInInfo.FieldByName('Surname').Value:=sSurname; 
      tblLogInInfo.FieldByName('Username').Value:=sUsername; 
      tblLogInInfo.FieldByName('Password').Value:=sPassword; 
      tblLogInInfo.Post; 
     end; 
     ShowMessage('You have successfully created an account!'); 
     Form2.Close; 
     Form1.Show; 
    end 
    else 
    begin 
     ShowMessage('Your passwords did not match. Please try again.'); 
    end; 

Ceci est le code que j'utilise pour ajouter un enregistrement, mais il n'ajoute pas l'enregistrement. J'ai essayé plusieurs autres méthodes, mais cela ne fonctionne pas. Je suis au point où je voudrais redémarrer l'ensemble du programme, et je ne voudrais pas le faire en raison du fait que j'ai déjà plus de 1 000 lignes de code.Mon programme n'est pas ajouter un enregistrement à une table dans une base de données

+1

Vous n'avez pas besoin de passer au dernier enregistrement. 'Append' est supposé ajouter le nouveau tuple à la fin de la table, pas que la position physique du tuple soit importante. Est-ce que 'Nom' est la clé primaire de la table? –

+0

Non. Son champ ID dans la table qui est un type de données AutoNumber –

Répondre

2

Vous passez au dernier enregistrement, puis vous effectuez un while not EOF. Cela crée une boucle infinie qui créerait le même disque pour toujours. Supprimez le WHILE et remplacez l'insertion par un append. Aussi, faire les choses de cette façon est bien, mais si vous utilisez une base de données SQL qui supporte les procédures stockées, vous devriez chercher à utiliser une procédure stockée pour faire l'insertion à la place.

+0

Serait-il utile si j'ai changé 'tblLogInInfo.Last;' à 'tblLogInInfo.First' ou en supprimant complètement cette ligne ?? –

0

Votre code devrait fonctionner correctement. Vérifiez si vous faites référence à la bonne table dans la bonne base de données sur le composant "tblLogInInfo". Je sais que cela semble boiteux, mais parfois cela m'arrive ..