JBTALKS.CC

标题: vb.如何将listbox里的items存进database?? [打印本页]

作者: Autistic紅毛丹    时间: 2010-8-30 04:37 PM
标题: vb.如何将listbox里的items存进database??
请问如何将listbox/listview里面的items save进database里面呢??(microsoft access)
作者: shippo    时间: 2010-8-30 09:34 PM
不知道你不会哪样

如果是不会拿出listBox的item:
mydata=listBox1.items.item(0)   '提出第一个items。
要拿出全部item, 先count得到listBox的size...然后for loop...把它放进array(或其他collections type)里..

如果不会database:
建议你去读点书找...要write to database 有很多方法...
dao是其中一种...
你可以试着google:vb.net dao database
作者: Autistic紅毛丹    时间: 2010-8-30 10:12 PM
回复 2# shippo


    意思是说要一个一个count来要拿出listBox的item吗?
那如果不知道listbox里的items到底有多少个呢??(因为会随情况变动)
作者: shippo    时间: 2010-8-30 10:52 PM
回复 3# Autistic紅毛丹


不是
是用listBox1.items.count 来检查listBox里有几个items....
然后用for loop从第一个item到最后一个item拿出来
example:
  1.      
  2.         Dim myItem() As String
  3.         ListBox1.Items.Add("aaaaa")
  4.         ListBox1.Items.Add("bbbb")
  5.         ListBox1.Items.Add("ccccc")

  6.         Dim count As Integer = ListBox1.Items.Count
  7.         ReDim myItem(count)
  8.         For i = 0 To (count - 1)
  9.             myItem(i) = ListBox1.Items.Item(i)
  10.         Next
复制代码

作者: Autistic紅毛丹    时间: 2010-8-31 02:25 AM
本帖最后由 Autistic紅毛丹 于 2010-8-31 01:25 PM 编辑

我已经在add data source 那边添加这个db了
我若是用现成db的source(listbox,)
count了过后
  1.   Dim myItem() As String

  2.         Dim count As Integer = File_NameListBox.Items.Count

  3.         ReDim myItem(count)

  4.         For i = 0 To (count - 1)

  5.             myItem(i) = File_NameListBox.Items.Item(i)

  6.             Me.File_ListBindingSource.AddNew()("File Name") = File_NameListBox.Items(i)
复制代码
是不是这样?

那我问你哟~
如果以上的list都只是资料,我需要在database里每一个资料的旁边加一个name又要怎样?(一样名字)
数目跟i一样~
作者: 宅男-兜着走    时间: 2010-8-31 12:54 PM

  1.     Private Sub OnSelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles listItem.SelectedIndexChanged
  2.         Dim itm As String = listItem.SelectedItem
  3.         // ListBox Selected Indexx Changed 事件下执行这个动作 listView 有个Property 叫做Selected        Item。
  4.         // 看你放进去的DataType 是什么, 就宣告成什么dataType 即可。
  5.     End Sub

  6.     Private Sub OnWindowLoaded(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  7.         listItem.Items.Add("Sample Data 1")
  8.         listItem.Items.Add("Sample Data 2")
  9.         listItem.Items.Add("Sample Data 3")
  10.         listItem.Items.Add("Sample Data 4")
  11.         // Form Load 事件启动, 添加资料进入资料库。
  12.     End Sub
复制代码

作者: Autistic紅毛丹    时间: 2010-8-31 02:49 PM
  1. Dim folderInfo As New IO.DirectoryInfo(c:\\)
  2.         Dim arrFilesInFolder() As IO.FileInfo
  3.         Dim fileInFolder As IO.FileInfo

  4.         arrFilesInFolder = folderInfo.GetFiles("*.*")
  5.         For Each fileInFolder In arrFilesInFolder
  6.             File_NameListBox.Items.Add(fileInFolder.Name)
  7.         Next
复制代码
我用以上的方式读取了一个directory的file list,请问又要怎样写才能读取subdirectiry的file list呢??
example:
-------------------------------------
c:\aa.exe
c:\folder\aa.exe
c:\folder\folder\aa.exe
-------------------------------------
作者: Autistic紅毛丹    时间: 2010-8-31 10:44 PM
如果我的datagrid view已经有了变动,要怎样才能save去真正的database里面呢、??
作者: 宅男-兜着走    时间: 2010-8-31 11:11 PM
如果我的datagrid view已经有了变动,要怎样才能save去真正的database里面呢、??
Autistic紅毛丹 发表于 2010-8-31 10:44 PM


请问你是用 什么连接方式?

如果是  TypedDataSet的话, 直接Adapter.Update(Table); 就搞定了。
如果是 Ado.net 的话, 就得请你自己一个个Loop 出来自己Update了。
如果是 Linq To Sql 的话 就直接SubmitChanged()

所以还是请你说出你是怎么 操控资料的先。
作者: Autistic紅毛丹    时间: 2010-9-1 12:19 AM
回复 9# 宅男-兜着走


    这个问题我解决了,因为我之前是用debug来开,不是用原始文件...有心了^^

我想问一下,如图,我的FIle Name已经有资料了,请问要如何家Drive Name呢??从textbox.text,一连串continiously~

作者: 宅男-兜着走    时间: 2010-9-1 01:02 AM
回复  宅男-兜着走


    这个问题我解决了,因为我之前是用debug来开,不是用原始文件...有心了^^

...
Autistic紅毛丹 发表于 2010-9-1 12:19 AM

  1. Dim info As New DirectoryInfo("C:\Users\JuniorT\Desktop\SampleDirectoryScanner")
  2.         Dim files As FileInfo()

  3.         files = info.GetFiles()

  4.         Dim fileName As String
  5.         Dim driveLetter As String
  6.         Dim fullPath As String
  7.         fileName = files(0).Name
  8.         driveLetter = files(0).FullName.ToCharArray(0, 3)
  9.         fullPath = files(0).FullName

  10.         MessageBox.Show(String.Format("File Name : {0} , Drive Letter : {1}, Full Path : {2} ", fileName, driveLetter, fullPath))
复制代码
Paiseh 我不会VB 的。

重点在这句而已。

  1. driveLetter = files(0).FullName.ToCharArray(0, 3)
复制代码
我从Index 0 的位置后算起 3 个 Char 然后组合成String
Result(Drive Letter)=   
C:\

Name 我想你已经会了,
FullName 就是, 完整的Path 跟 File Name。
作者: Autistic紅毛丹    时间: 2010-9-1 01:26 AM
回复 11# 宅男-兜着走

如果我是要在另外一排(连续19个)同样的text呢??
从textbox.text拿的?要写进datagridview每一个file name隔壁都一样的东西~
作者: 宅男-兜着走    时间: 2010-9-1 01:55 AM
回复  宅男-兜着走

如果我是要在另外一排(连续19个)同样的text呢??
从textbox.text拿的?要写进da ...
Autistic紅毛丹 发表于 2010-9-1 01:26 AM



   
我是做到了啦, 我不懂你要的是什么, 也不懂你的资料来源是如何的。我看你的图片,模仿你的方式做了个。

  1. Public Class Form1


  2.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  3.         Dim info As New DirectoryInfo("C:\Users\JuniorT\Desktop\SampleDirectoryScanner")
  4.         Dim files As FileInfo()
  5.         files = info.GetFiles()

  6.         dgFile.Rows.Add(files.Length)

  7.         For i = 0 To files.Length - 1
  8.             Dim driveLetter As String = files(i).FullName.ToCharArray(0, 3)
  9.             dgFile.Rows(i).Cells(0).Value = driveLetter
  10.             dgFile.Rows(i).Cells(1).Value = files(i).Name
  11.             dgFile.Rows(i).Cells(2).Value = files(i).FullName

  12.         Next i

  13.     End Sub
  14. End Class
复制代码
dfFile, 是 我的DataGridView
作者: Autistic紅毛丹    时间: 2010-9-1 02:32 AM
我的出现error-----------
Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.
到底是为什么吖T.T
作者: 宅男-兜着走    时间: 2010-9-1 02:50 AM
我的出现error-----------
Rows cannot be programmatically added to the DataGridView's rows collectio ...
Autistic紅毛丹 发表于 2010-9-1 02:32 AM


啊哈哈哈哈哈哈!!!
因为你用资料绑定的关系。
你是存进DataBase过的吧??

你有两种做法:
1. 资料库里面存 Driver Letter, Full Path, File Name 这些, 意思就是做了计算后, 一次过Insert 进去。
2. 存FullPath, 然后再来执行计算。
作者: Autistic紅毛丹    时间: 2010-9-1 07:06 AM
本帖最后由 Autistic紅毛丹 于 2010-9-1 09:28 AM 编辑

回复 15# 宅男-兜着走

哇~感谢您~我弄到了!
作者: 宅男-兜着走    时间: 2010-9-1 11:50 AM
回复  宅男-兜着走

哇~感谢您~我弄到了!
Autistic紅毛丹 发表于 2010-9-1 07:06 AM


那么简单就弄到了?
恭喜你
作者: Autistic紅毛丹    时间: 2010-9-2 12:07 AM
回复 17# 宅男-兜着走


    哎呀~我又有问题鸟..
假如说我已经可以把我的第一个List save到database,当我第二次把datagridview的data update到database是就出现了以下的问题..到底是哪里写错==

作者: 宅男-兜着走    时间: 2010-9-2 12:55 AM
本帖最后由 宅男-兜着走 于 2010-9-2 12:57 AM 编辑
回复  宅男-兜着走


    哎呀~我又有问题鸟..
假如说我已经可以把我的第一个List save到database,当 ...
Autistic紅毛丹 发表于 2010-9-2 12:07 AM


我的判断是:

你之前是资料绑定(DataBinding) 进入你的DataGridView, 然后你启动Update的时候, 没指定的Column 出现, 就出了这样的Error。

不过都说是判断了, 不准的。

你现在要思考的是, 你VB 语句没错, 错是错在你的资料操作哪里。

检查你的 Query 看看。

如果不介意, 你也能放上你那面的Code, 跟你的Table Design, 不必害羞。

另外点,我好想看到你的 DataGridView 里面有空值, 如果不被允许的话,也是会报错的。

(PM:UI设计到不错, 可惜, 你的控件没跟着一起变色
作者: Autistic紅毛丹    时间: 2010-9-7 01:05 PM
回复 19# 宅男-兜着走
http://www.fileden.com/files/2008/11/5/2174223//VBA Project.zip
真的搞不懂~~我太笨了==




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5