Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 将包含255个以上字段的制表符分隔的txt文件导入两个Access表的工作代码_Ms Access_Import_Vba_Ado_Flat File - Fatal编程技术网

Ms access 将包含255个以上字段的制表符分隔的txt文件导入两个Access表的工作代码

Ms access 将包含255个以上字段的制表符分隔的txt文件导入两个Access表的工作代码,ms-access,import,vba,ado,flat-file,Ms Access,Import,Vba,Ado,Flat File,下面的代码将包含255个以上字段的制表符分隔文件导入两个表。只需确保在设计两个表时,所有字段都具有导入字段的正确数据类型。我最初是使用Access导入文本文件向导创建表的。在使用向导之前,我删除了255之后的字段以创建第一个表,然后删除了前255个字段以创建第二个表。希望这有助于别人,并感谢下面的每个人谁帮助了这个项目我 Public子导入文件() '要使用ADODB.Recordset,请确保您有ADO的引用集 将rst设置为ADODb.Recordset 将rst2设置为ADODb.Reco

下面的代码将包含255个以上字段的制表符分隔文件导入两个表。只需确保在设计两个表时,所有字段都具有导入字段的正确数据类型。我最初是使用Access导入文本文件向导创建表的。在使用向导之前,我删除了255之后的字段以创建第一个表,然后删除了前255个字段以创建第二个表。希望这有助于别人,并感谢下面的每个人谁帮助了这个项目我

Public子导入文件()
'要使用ADODB.Recordset,请确保您有ADO的引用集
将rst设置为ADODb.Recordset
将rst2设置为ADODb.Recordset
作为字符串的Dim strFile
像弦一样的模糊的条纹
Dim varSplit作为变体
Dim intCount为整数
Set rst=New ADODb.Recordset
Set rst2=New ADODb.Recordset
'在此处更改表名
rst.打开“AppsImport1”、CurrentProject.连接、adOpenDynamic、ADLOCKOPTIMATION
rst2.打开“AppsImport2”,CurrentProject.连接,adOpenDynamic,AdLockOptimized
'在此处更改文本文件名和位置
strFile=“G:\Home\RiskMgtReports\AutoDatabase\CreditAppExtract.txt”
打开strFile作为#1输入
作为整数的Dim i
长
n=DMax(“索引编号”、“完整提取历史”)
直到EOF(1)为止
'此计数器仅用于在导入前到达适用行
intCount=intCount+1
'逐行读取文本文件
行输入#1,strInput
'在第二行开始导入。更改数字以匹配您选择的行
'要从开始导入吗
如果intCount>=2,则
n=n+1
'使用拆分函数创建一个一维数组
varSplit=Split(strInput、vbTab、vbBinaryCompare)
”他补充道
用rst
.AddNew
.字段(0)=n
对于i=1到137
如果Nz(varSplit(i-1),“)=”,那么
.Fields(i)=空
其他的
如果左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“Jan M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“Feb M”或左(varSplit(i-1),4)和右(Trim(varSplit)(varSplit(i-1)),1)=“Apr M”或左(varSplit(varSplit)(i-1),4)和右(Trim)(varSplit(i-1)),varSplit(i-1)“五月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“六月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“七月M”或左(varSplit(i-1),4)和右(varSplit(i-1),1)=“八月M”或左(varSplit i(i-1),4)和右(varSplit(i-1)),1)=“十月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“十一月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“十二月M”然后
.Fields(i)=CDate(格式为varSplit(i-1),“mm/dd/yyyy”))
其他的
.Fields(i)=varSplit(i-1)
如果结束
如果结束
接下来我
.更新
我想你不需要这个
以
用rst2
.AddNew
.字段(0)=n
.Fields(1)=varSplit(0)
对于i=138至274
如果Nz(varSplit(i-1),“)=”,那么
.字段(i-136)=空
其他的
如果左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“Jan M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“Feb M”或左(varSplit(i-1),4)和右(Trim(varSplit)(varSplit(i-1)),1)=“Apr M”或左(varSplit(varSplit)(i-1),4)和右(Trim)(varSplit(i-1)),varSplit(i-1)“五月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“六月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“七月M”或左(varSplit(i-1),4)和右(varSplit(i-1),1)=“八月M”或左(varSplit i(i-1),4)和右(varSplit(i-1)),1)=“十月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“十一月M”或左(varSplit(i-1),4)和右(Trim(varSplit(i-1)),1)=“十二月M”然后
.Fields(i-136)=CDate(格式为varSplit(i-1),“mm/dd/yyyy”))
其他的
.Fields(i-136)=varSplit(i-1)
如果结束
如果结束
接下来我
.更新
以
如果结束
环
"垃圾收集",
关闭#1
rst.关闭
设置rst=无
rst2,关闭
设置rst2=无
端接头

我承认,您在这里所做的已经不够理想。我不经常在需要这么多字段的地方处理数据

这里的解决方案基本上是管理两个不同的记录集对象

Public子导入文件()
'要使用ADODB.Recordset,请确保您有ADO的引用集
将rst设置为ADODb.Recordset
将rst2设置为ADODb.Recordset
作为字符串的Dim strFile
像弦一样的模糊的条纹
Dim varSplit作为变体
Dim intCount为整数
Set rst=New ADODb.Recordset
Set rst2=New ADODb.Recordset
'在此处更改表名
rst.打开“ImportableData”、CurrentProject.Connection、adOpenDynamic、ADLOCKOPTIMATION
rst2.打开“ImportableData2”,CurrentProject.Connection,adOpenDynamic,AdLockOptimization
'在此处更改文本文件名和位置
strFile=“G:\Home\RiskMgtReports\AutoDatabase\fullextract.txt”
打开strFile作为#1输入
作为整数的Dim i
直到EOF(1)为止
"这个柜台只是为了去机场,