2012-09-14 72 views
0

正在从数据库获取数据并存储在dataset.dataset中包含电话号码列表。 我想找出每个电话号码的长度。如果长度为十,则表示将其添加到一个数据表中。或者长度大于10意味着从电话号码的右侧获得10个字符并将其存储在相同的数据表中。这里是我的代码。当我调试代码时,我只得到8000个行。但最初数据集包含40,700行值。在
数据表后达到8000行我得到错误在vb.net中长度不能小于零参数名称长度错误

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 

回答

1

你不能在Substring方法使用负的长度。从长度上减去10来获取你想要的字符串的起点:当你想从该点的字符串的其余部分

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

,实际上是不需要第二个参数:

rsltstring = chkdphone.Substring(chkdphone.Length - 10) 
+0

我会尽力。非常感谢你的回复 – vps

+0

如果我有一个电话号码123456789012 na结果会是这样的3456789012. ur commend ii给出这样的答案 – vps

+0

主要条件是电话no长度> = 10意味着我想从右边检索char方(10个字符,我想采取) – vps

相关问题