cxiプログラムで「like」を使ってaccessデータベースステートメントを調べます.

3621 ワード

accessデータベースを使ったcci手順を書いているうちに、何か奇妙な問題が起こった.例えば「like」を使ってあいまいなクエリを行い、accessクエリビューでは「*」を使ってあいまいなマッチングを行います.
   プログラム内のクエリー文字列も「*」を使うべきだと思いましたが、実はそうではありません.
   accessデータベースの中でデバッグ用「*」を使って、プログラムの中で「%」を使って変更します.でないと、何のデータも確認できないし、vsはまだ何の間違いも報告していません.デバッグは原因が見つけられません.
 
 try

            {

                  _strSql="";

                if (dataGridView1.Rows.Count <= 1)

                {



                    if (dataGridView1.Rows[0].Cells[0].Value == null || dataGridView1.Rows[0].Cells[1].Value == null || dataGridView1.Rows[0].Cells[2].Value == null)

                    {

                        return;

                    }

                    else

                    {

                        string filed =  GetArrayElement(Cxzd, dataGridView1.Rows[0].Cells[0].Value.ToString().Trim(), 1);



                        //string type = GetArrayElement(Cxzd, filed, 2);

                        string cs = Cxfs[dataGridView1.Rows[0].Cells[1].Value.ToString().Trim()].ToString(); 

                        string content = dataGridView1.Rows[0].Cells[2].Value.ToString();

                        if (cs == "like")

                        {

                            content = "'%" + content + "%'";

                        }



                        _strSql = string.Format("where {0} {1} {2}  ", filed, cs, content);

                    }

                }

                   
   後に資料を調べます.元々はaccessドライバを接続する問題です.私のプログラムではAccessまではoledbドライバを使っていますので、ここでは「*」は使えません.「%」は必須です.DAOでAccessデータベースにアクセスする場合は、必ず「*」を使います.