0

データベースからデータを取得してデータセットに保存しています。データセットには電話番号のリストが含まれています。すべての電話番号の長さを知りたいです。長さ10の場合、1つのデータテーブルに追加することを意味します。または、10 を超える長さは、電話番号の右側から 10 文字を取得し、同じデータテーブルに格納することを意味します。これが私のコードです。コードをデバッグすると、8000 行しか取得できませんが、もともとデータセットには 40,700 が含まれています。行の値。データテーブルが8000行に達した後、
エラーが発生しています

my code
-------
  ada.Fill(ds, "reports.renewal_contact_t ")

                ds.Tables(0).DefaultView.RowFilter = " PHONE NOT like'0'"
                dt = ds.Tables(0)
                For Each q In dt.Rows
                    chkphone = q("PHONE").ToString
                    chkdphone = Regex.Replace(chkphone, "[^\d]", "")

                    'MessageBox.Show(chkdphone)


                    If (chkdphone.Length = 10) Then
                        Dim anyRow As DataRow = dt2.NewRow
                        anyRow(0) = chkphone.ToString
                        dt2.Rows.Add(anyRow)

                    ElseIf (chkdphone.Length >= 10) Then
                        rsltstring = chkdphone.Substring(chkdphone.Length, -10)

                        Dim anyrow1 As DataRow = dt2.NewRow
                        anyrow1(0) = rsltstring.ToString
                        dt2.Rows.Add(anyrow1)
                    Else


                    End If
                Next

                new_ds.Tables.Add(dt2)
                ComboBox1.DataSource = new_ds.Tables(0)
                ComboBox1.DisplayMember = "PHONE" 



 Error
 -----
 length cant be less than zero parameter name length
4

1 に答える 1

1

メソッドで負の長さを使用することはできませんSubstring。長さから10を引くと、必要な文字列の開始点が得られます。

rsltstring = chkdphone.Substring(chkdphone.Length - 10, 10)

その時点からの残りの文字列が必要なため、2番目のパラメーターは実際には必要ありません。

rsltstring = chkdphone.Substring(chkdphone.Length - 10)
于 2012-09-14T05:35:41.320 に答える