是否可以批插入表?

soiskjr 2005-10-29 10:12:31
大概的要求是将窗体几个textbox的内容作为记录插入到表中,其中很多记录除关键字外其他字段内容都一样,且关键字是按顺序的,比如05电00000~00100,想要给两个textbox,输入前后两个,然后插入的时候批量操作,而不用每次都要输入那么多字段,请问可否这样实现的?
...全文
105 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
soiskjr 2005-11-01
  • 打赏
  • 举报
回复
可是datagrid里的属性已经有默认了,但是点击运行后,点击该控件,连焦点都没法获得
是不是还需要编程设定?我另开一个主题,帮我解答一下好吗?
faysky2 2005-10-31
  • 打赏
  • 举报
回复
怎么样去编程使得datagrid有编辑功能?
------------
右键点DataGrid->"属性"->"通用"->"允许更新"打上钩就能编辑
soiskjr 2005-10-31
  • 打赏
  • 举报
回复
谢谢二位!
tofaysky2() :
你说没有那样的控件?但是有一个人在控件版面问了一个datagrid回车转行的问题,具体是:
----------
在datagrid中每个单元格输入完后,按回车,自动转到右边一格,如果到最后一格则转到下一行开始那一格.可以用Private Sub DataGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then SendKeys IIf(DataGrid1.Col = DataGrid1.Columns.Count - 1, "{down}+{home}", "{right}")
End Sub实现.但是如果输入数字时会跳到最前一个空的格子里,如何解决?
----------
这个是不是啊?怎么样去编程使得datagrid有编辑功能?
of123 2005-10-31
  • 打赏
  • 举报
回复
这样,更快些:

dim i as integer

for i = val(mid(text1,4)) to val(mid(text2,4))
'插入记录,只写入主键
cn.execute "insert into 表(主键) values(' & left(text1,3) & format(i,"0000#") & "')"
next i

'所有的其他字段一次更新,注意字符型值用单引号
cn.execute "update 表 set 字段2='" & text3 & "',字段3=" & text4 & " where isnull(字段2)"

faysky2 2005-10-30
  • 打赏
  • 举报
回复
还是不大明白你说的问题
faysky2 2005-10-30
  • 打赏
  • 举报
回复
i 是循环变量,在For里没有它,够不成循环
soiskjr 2005-10-30
  • 打赏
  • 举报
回复
这个好像没有写出主键值的循环啊(刚才说到主键值在两个textbox中是按顺序的头尾两个)
比如text1.text=05电0000,text2.text=05电0100,其他字段都是一样,也在别的textbox里
这样就有101行记录,该怎么去插入到表中?
另外,你上面的循环
-----------------
For i=0 To yourFieldCount-1
strTemp=strTemp & "'" & Text1.Text & "~" & Text2.Text & "',"
Next
--------------------
i取什么作用?
faysky2 2005-10-30
  • 打赏
  • 举报
回复
这次理解你的意思了,代码修改后如下:
另外你说的那种控件,得自己写代码来控制

'引用ADO(Microsoft ActiveX Data Objects 2.X Library)
Private Sub Command1_Click()
On Error GoTo err
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登陆用户名;Password=登录密码;Initial Catalog=数据库名;Data Source=yourSERVICE"
cn.CursorLocation = adUseClient '设置客户端游标
cn.Open
Dim strSql As String, strTemp As String, i%, lowLimit As Long, upLimit As Long
lowLimit = CLng(Mid(Text1.Text, 5)) '取得用户输入的下限(如输入的是05电00001,那么取出来的是1),根据你的具体情况来修改
upLimit = CLng(Mid(Text2.Text, 5)) '取得用户输入的上限(如输入的是05电00200,那么取出来的是200),根据你的具体情况来修改


Dim i%
For i = lowLimit To upLimit
strTemp = ""
strTemp = Left(Trim(Text1.Text), 4) '从Text1.Text中取出到"05电",根据你的具体情况来修改
strTemp = strTemp & Format(i, "00000") '0的个数具体根据你的主键的名称来定
strSql = "insert into 表 values('" & strTemp & "','" & Text3.Text & "','" & Text4.Text & "','" & Text5.Text & "','" & Text6.Text & "')" 'Text的个数得根据你的具体情况来定
cn.execute (strSql)
Next


Exit Sub
err:
MsgBox err.Description
End Sub
soiskjr 2005-10-30
  • 打赏
  • 举报
回复
由于我实际要实现的是一个工作任务的安排,这个任务要根据产品最终的交货期来确定,所以安排任务的时候想要看到交货期信息,
就类似要把学生的信息比如名称、专业之类的导出来,
有没有这么一个控件,在每行的第一列输入学号,回车,自动从表StuInfo中查询导出该学生信息。
而text3~6中的书名、类别、出版社、条码还是按原来的方法用textbox控件
点击“添加”就把学号、书名、类别、出版社、条码作为字段,将所有记录都存入表borrow中

昨晚看到有人问用fpspread做表格编辑器的问题,我没听说过,可否用这个或别的实现?
具体如何实现?
soiskjr 2005-10-30
  • 打赏
  • 举报
回复
i 是循环变量,在For里没有它,够不成循环
--------------------------------这是你写的代码啊,构不成循环,是不是写漏了?

我的意思是:比如拿学生借书的例子,有50个学生,学号分别是1~50,借的书都是一样的,
在text1里输入1,text2里输入50,text3~6分别输入书名、类别、出版社、条码
按“添加”按钮,就可以把这50个记录都插入一个表中
faysky2 2005-10-29
  • 打赏
  • 举报
回复
'引用ADO(Microsoft ActiveX Data Objects 2.X Library)
Private Sub Command1_Click()
On Error GoTo err
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登陆用户名;Password=登录密码;Initial Catalog=数据库名;Data Source=yourSERVICE"
cn.CursorLocation=adUseClient'设置客户端游标
cn.Open
Dim strSql As String,strTemp As String,i%,yourFieldCount%
yourFieldCount=5 '假设你的那些相同的字段有5个
For i=0 To yourFieldCount-1
strTemp=strTemp & "'" & Text1.Text & "~" & Text2.Text & "',"
Next
strTemp=left(strTemp,Len(strTemp)-1)'去掉后面多余的逗号
strSql="insert into 表 values('主键值'," & strTemp & ")"
cn.execute(strSql)
Exit Sub
err:
MsgBox err.Description
End Sub

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧