【问题标题】:MS Access Not Exporting Left Padded DigitsMS Access 未导出左侧填充数字
【发布时间】:2013-01-31 21:02:33
【问题描述】:

我有一个表,其中包含一些 char(2) 字段。如果字段只有 1 个字符长,则某些字段需要前导 0(零)。我创建了一个查询,我尝试了几种不同的格式化方法来实现左侧填充。这些尝试在查看查询结果时工作正常,但是当我检查导出时创建的文本文件时,相关字段不包含前导 0。

这是我在查询中使用的两种方法

`FORMAT(tblMHOutcome.Dayscom, "00") AS Dayscom`
`IIF(LEN(tblMHOutcome.Daysatte)=1, "0"&tblMHOutcome.Daysatte`

下图显示了导出窗口中的视图,其中填充了字段:

下面是生成的文本文件的图像,没有字段填充:

关于如何在格式化后导出查询的任何建议?

更新:添加完整查询

`SELECT tblMHOutcome.ContractorID, tblMHOutcome.SiteID, tblMHOutcome.SSN,     
tblMHOutcome.ClientID, tblMHOutcome.Purpeval, tblMHOutcome.Evaldate, 
tblMHOutcome.StaffID, tblMHOutcome.Initevada, tblMHOutcome.Pincosrc,     
tblMHOutcome.Disincom, tblMHOutcome.Prognosis, tblMHOutcome.Depcrims, 
tblMHOutcome.Admitype, FORMAT(tblMHOutcome.Dayscom, "00") AS Dayscom, 
FORMAT(tblMHOutcome.Dayswork, "00") AS Dayswork, tblMHOutcome.Incopay, 
tblMHOutcome.Incogov, tblMHOutcome.Incother, tblMHOutcome.GAF, 
IIF(LEN(tblMHOutcome.Daysavai)=1, "0"&tblMHOutcome.Daysavai, tblMHOutcome.Daysavai) AS 
Daysavai, IIF(LEN(tblMHOutcome.Daysatte)=1, "0"&tblMHOutcome.Daysatte, 
tblMHOutcome.Daysatte) AS Daysatte, IIF(LEN(tblMHOutcome.CGAS)=1, 
"0"&tblMHOutcome.CGAS, tblMHOutcome.CGAS) AS CGAS, tblMHOutcome.DJJComit, 
tblMHOutcome.Riskfact, tblMHOutcome.Residstat, tblMHOutcome.Marital, tblMHOutcome.Empl, 
tblMHOutcome.Residcont, tblMHOutcome.Grade, tblMHOutcome.Rx, tblMHOutcome.Develop, 
tblMHOutcome.Physical, tblMHOutcome.Ambulat, tblMHOutcome.Visual, tblMHOutcome.Hearing, 
tblMHOutcome.English, tblMHOutcome.ADLFC, tblMHOutcome.Provinfo, tblMHOutcome.Zip, 
tblMHOutcome.Tstat, tblMHOutcome.Famsize, tblMHOutcome.MHProb, tblMHOutcome.Faminc, 
tblMHOutcome.Referral, tblMHOutcome.Provid, tblMHOutcome.MHDiagnosis, 
tblMHOutcome.SADiagnosis, tblMHOutcome.Bakeract, tblMHOutcome.Rxidp, 
tblMHOutcome.Rxpap, tblMHOutcome.Contnum1, tblMHOutcome.Contnum2, 
tblMHOutcome.Contnum3, tblMHOutcome.Vetstatus, tblMHOutcome.Social, 
tblMHOutcome.School, tblMHOutcome.Arrest
FROM tblMHOutcome
WHERE (((tblMHOutcome.DeleteRecord)=False))
ORDER BY tblMHOutcome.Evaldate;`

和 VBA 代码:

`DoCmd.TransferText acExportFixed, "MHOutcomeExport", "qryMHOutcomeExport", "Exports\MHOutcome.txt", False`

【问题讨论】:

  • 需要查看查询(sql视图)。
  • 仅仅改变格式不会影响导出。我能够成功使用 IF/LEN/"0"+ 连接方法。请发布您的其余部分。

标签: ms-access ms-access-2010


【解决方案1】:

你可以使用:

SELECT Format(ANumber,"00") AS Expr1 
INTO [Text;FMT=Fixed;DATABASE=Z:\docs].[exp.txt] 
FROM table1;

schema.ini 也可以提供帮助。例如,Handle TransferText Errors

或者,这将创建一个两位数:

SELECT Right("00" & Anumber,2)
FROM Table1;

DoCmd.TransferText acExportFixed, "expspec", "Query3", "z:\docs\exp.txt"

重新评论

SELECT IIf(Not IsNull(ANumber),Right("00" & Anumber,2), ANumber)
FROM Table1;

【讨论】:

  • 我有一个保存的导出规范,用于导出。如果有帮助,我已经添加了完整的查询和 VBA 代码。
  • 我不能使用 Right("00") 因为其中一些字段应该是空白的,这个方法会用 00 填充这些字段。
  • 我添加了 IIf,但它仍然只导出一个数字。您认为我应该删除并重新创建导出规范吗?
  • 可能,我测试过,我得到两位数。我会仔细检查。是的,两位数。
  • 出口规范似乎是问题所在,即使新的和旧的完全一样,我猜是它的“内部”问题导致了这个问题。要分发给其他人,我可能应该查看 schema.ini?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 2019-03-25
  • 1970-01-01
  • 2016-05-30
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多