2017-04-03 10 views
-2

私のBDグリッドにテーブルの名前を選択した後、私はダブルクリックすることで、このテーブルに属しcolonesを持つようにしたいが、私は二重のこのエラー0x00840bd7でのアクセス違反:0x00000000 'の読み取り。プロセス....(5644)「

lorque jを見つけます'0x00840bd7でのアクセス違反:アドレス0x00000000のを読んで' というメッセージと$ 00840BD7例外クラスの$ C0000005に '最初のチャンス' 例外をクリックします。プロセスconversion.exe(5644)「ここ コードです:

procedure TForm5.DBGrid1DblClick(Sender: TObject); 

begin 
    FDQuery2.SQL.Clear; 
FDQuery2.SQL.Text := 'select column_name from information_schema.columns where table_schema="bases" and table_name = "'+DBGrid2.SelectedField.ToString+'"'; 
FDQuery2.Open; 
ListBox2.Clear; 
FDQuery2.GetFieldNames(ListBox2.Items); 
end; 

あなたは私を助けることができますか?

+1

多分あなたはアクセス違反を取得する行を指定する必要があります。デバッガを実行して、どのオブジェクト参照が原因であるのか確認しましたか? – Frazz

+0

エラーメッセージは十分にクリアです。あなたは、どこかに無ポインタまたは参照を持っています。なぜ自分でこれをデバッグしていないのですか?なぜ基本的なデバッグを行う前にここに尋ねるのですか?または、エラーメッセージの意味について実際にあなたの質問ですか? –

+0

あなたの質問は何ですか? –

答えて

3

あなたはこのようなあなたのコードを書き換える場合:

var 
    AField : TField; 
begin 
    AField := DBGrid2.SelectedField; 
    Caption := AField.ToString; 

    FDQuery2.Close; 
    FDQuery2.SQL.Text := 'select column_name from information_schema.columns where table_schema="bases" and table_name = "'+DBGrid2.SelectedField.ToString+'"'; 
    FDQuery2.Open; 
    ListBox2.Clear; 
    FDQuery2.GetFieldNames(ListBox2.Items); 

をし、それを実行して、あなたの問題がすぐにものを見ることができるはずです。あなたのケースではTStringFieldを返し、フィールドのタイプある -

ToStringグリッドの選択したフィールドに値を返しません。その文字列値ではありません。テーブルから文字列値を取得するには、DBGRid2.SelectedField.AsStringを使用します。

  1. のDBGridのSelectedFieldは、フィールドの値にアクセスするために使用:

    は、私はあなたのコードが間違っていると思う、他の物事のカップルがあります。一般的には、これは問題ありませんが、あなたが必要としているフィールドを既に知っているからです。Table_Name - ユーザーはクリックする必要がありますか?また、間違った列を選択することもあります。

    私はあなたのDBGrid2は、そのデータソースを経由してFDQuery2に接続されている賭けるFDQuery2.FieldByName('Table_Name').AsString

  2. を使用することをお勧め。もしそうなら、DBGrid2に既に表示されているものに基づいてクエリを実行することは、あなたが何をしているのか分からない限り、問題を求めています。他のqのコードで作業している場合は、FDQuery1からTable_Name値を取得する方がよいでしょう。いずれの場合においても

、あなたの他のq、Display database structure from Delphi (rad studio)に私の答えに、私は2つ目の表の列1は、自動的にあるように、2つのテーブル間のマスター詳細リンクを設定する方法を示しました最初のテーブルで選択したテーブルと同期します。

+0

お返事ありがとうございます – sasa

関連する問題