Vba 将字段值复制到文本文件并另存为.sql
在MS Access中,我有一个字段存储用于项目的SQL。sql字段是启用了“富文本”属性的备注字段。这意味着下面有一个代码Vba 将字段值复制到文本文件并另存为.sql,vba,ms-access,vbscript,Vba,Ms Access,Vbscript,在MS Access中,我有一个字段存储用于项目的SQL。sql字段是启用了“富文本”属性的备注字段。这意味着下面有一个代码 CREATE TABLE NR_TMP_1_104 AS SELECT DISTINCT tmp.otherid ,tmp.groupno FROM NR_tmp_1_900 tmp ,NR_TMP_1_103 vp WHERE tmp.otherid = vp.otheri
CREATE TABLE NR_TMP_1_104 AS
SELECT DISTINCT tmp.otherid
,tmp.groupno
FROM NR_tmp_1_900 tmp
,NR_TMP_1_103 vp
WHERE tmp.otherid = vp.otherid;
SELECT groupno, COUNT(otherid) Counts
FROM NR_TMP_1_104
GROUP BY groupno;
SELECT otherid, actualvpchoice FROM NR_TMP_2_102
看起来真的很像下面(我很抱歉这一大块)。这意味着我不能做docmd.transfertext,获得正常外观文本的唯一方法是复制和粘贴
我需要能够将此字段导出到文本文件,并以.sql扩展名保存它
以下是我到目前为止的情况
如何打开文本文件,粘贴剪贴板上的内容并将其另存为.sql
多谢各位
"<div> </div>
<div><font size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">CREATE</font><font
size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font size=3
color=blue style=""BACKGROUND-COLOR:#FFFFFF"">TABLE</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font size=3 color=olive
style=""BACKGROUND-COLOR:#FFFFFF"">NR_TMP_1_104</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF""> </font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">AS</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">SELECT</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">DISTINCT</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF""> tmp</font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">.</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF"">otherid</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">,</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF"">tmp</font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">.</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF"">groupno</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">FROM</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> NR_tmp_1_900 tmp</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">,</font><font size=3
color=olive style=""BACKGROUND-COLOR:#FFFFFF"">NR_TMP_1_103</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> vp</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">WHERE</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> tmp</font><font size=3
color=blue style=""BACKGROUND-COLOR:#FFFFFF"">.</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF"">otherid </font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">=</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF""> vp</font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">.</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF"">otherid</font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">;</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">SELECT</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> groupno</font><font size=3
color=blue style=""BACKGROUND-COLOR:#FFFFFF"">,</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF""> </font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">COUNT(</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF"">otherid</font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">)</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF""> Counts</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">FROM</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font size=3 color=olive
style=""BACKGROUND-COLOR:#FFFFFF"">NR_TMP_1_104</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">GROUP</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">BY</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF""> groupno</font><font size=3 color=blue
style=""BACKGROUND-COLOR:#FFFFFF"">;</font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font></div>
<div><font size=3 color=black style=""BACKGROUND-COLOR:#FFFFFF""> </font><font
size=3 color=blue style=""BACKGROUND-COLOR:#FFFFFF"">SELECT</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> otherid</font><font size=3
color=blue style=""BACKGROUND-COLOR:#FFFFFF"">,</font><font size=3 color=black
style=""BACKGROUND-COLOR:#FFFFFF""> actualvpchoice </font><font size=3
color=blue style=""BACKGROUND-COLOR:#FFFFFF"">FROM</font><font size=3
color=black style=""BACKGROUND-COLOR:#FFFFFF""> NR_TMP_2_102</font></div>"
”
创建表NR_TMP_1_104作为
选择DISTINCT tmp.otherid
,tmp.groupno
来自NR_tmp_1_900 tmp
,NR_TMP_1_103 vp
其中tmp.otherid=vp.otherid;
选择groupno,COUNT(otherid)Counts
来自NR_TMP_1_104
分组编号;
从NR_TMP_2_102中选择otherid、actualvpchoice
您可以使用纯文本()
函数仅从备注字段的富文本中获取纯文本。下面是即时窗口中的一个示例
? DLookup("memo_field", "tblFoo", "id=1")
<div>a <strong>b </strong>c</div>
? PlainText(DLookup("memo_field", "tblFoo", "id=1"))
a b c
仅供参考,如果有人需要的话。HansUp的代码运行良好,不使用任何引用(下面的代码需要MS Forms引用),总体来说是一个更好的编码示例 然而,如果有人需要删除引号,那么这里有一种方法
Dim objFSO
Dim objFile
Dim ClipboardText
Me.sql.SetFocus
DoCmd.RunCommand acCmdCopy
Dim DataObj As New MSForms.DataObject
DataObj.GetFromClipboard
ClipboardText = DataObj.GetText
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\mysql.sql", 2, True)
objFile.WriteLine ClipboardText
objFile.Close
您是想将其保存为可编程的,还是只想以编程方式打开记事本、粘贴并另存为.sql。但我想完全按照你说的做,打开记事本,粘贴并另存为sql,而不是从access导出。我就知道你要讲这个主题。)你太棒了,你在vba和vbs方面的知识太棒了。你的耐心也是如此。我真的很感激你帮我做的一切。非常感谢。小问题。文件中的sql用引号括起来。这没什么大不了的,但这会破坏notepad++中的格式。你知道它为什么这么做吗?嗯。也许在你写
明文(Forms!freports!sql)
的时候把它们去掉?如果开头是一个双引号,结尾是另一个双引号strTemp=纯文本(Forms!freports!sql)
然后写入Mid(strTemp,2,Len(strTemp)-2)
。。。从我的头顶上掉下来。不,它隐藏在某种程度上。引号不会显示在msgbox或debug.print中,但会写入文件。所以我还是要用剪贴板。你的解决方案仍然引导我走上正确的道路,所以我坚持我所说的一切
Dim FileNum As Integer
FileNum = FreeFile()
Open "C:\SomeFolder\your.sql" For Output As #FileNum
Write #FileNum, PlainText(Forms!freports!sql)
Close #FileNum
Dim objFSO
Dim objFile
Dim ClipboardText
Me.sql.SetFocus
DoCmd.RunCommand acCmdCopy
Dim DataObj As New MSForms.DataObject
DataObj.GetFromClipboard
ClipboardText = DataObj.GetText
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\mysql.sql", 2, True)
objFile.WriteLine ClipboardText
objFile.Close