2017-10-18 3 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; 

これは私がレコードを追加するために使用するコードですが、レコードを追加しません。私はさまざまな方法を試しましたが、うまくいきません。私のプログラムはデータベースのテーブルにレコードを追加していません

私はプログラム全体を再開したいと思っています。私は既に1,000行以上のコードを持っているため、そうしたくありません。

+1

最後のレコードに移動する必要はありません。 'Append'は新しいタプルをテーブルの最後に追加することになっています。タプルの物理的位置が重要ではありません。 '名前'はテーブルの主キーですか? –

+0

テーブルのIDフィールドがオートナンバー型のデータ型です –

答えて

2

最後のレコードに移動してから、while not EOFを実行しています。これは永遠に同じレコードを作成する無限ループを作り出しています。 WHILEを削除し、InsertをAppendに変更します。また、このようにしても問題ありませんが、ストアドプロシージャをサポートするSQLデータベースを使用している場合は、代わりにストアドプロシージャを使用して挿入を行う必要があります。

+0

'tblLogInInfo.Last;を' tblLogInInfo.First'に変更した場合、またはこの行を完全に削除すると、それは役に立ちますか? –

0

コードは正常に動作するはずです。コンポーネント "tblLogInInfo"の正しいデータベースの正しいテーブルを参照しているかどうかを確認してください。私はこれが不自由な音だと知っていますが、時々これが私に起こります..

関連する問題