- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为(我的)小企业开发一个系统。我有大约 20 个数据文件(客户/供应商/商店项目/固定 Assets /租金/员工......等)这些文件的每条记录都使用 Type 语句定义,并使用 Put 或 Get 语句写入或读取。
每个数据文件都使用单独的工作簿进行维护或递增。
我还有单独的工作簿来控制公司的日常流程。 (销售/租赁/商店移动等)这些“运营”工作簿严重依赖数据文件中的记录。他们还为日常运动生成更多数据文件。
该系统由一个名为 Menu.xlsm 的工作簿控制,它允许用户选择所需的工作簿。 Menu.xlsm 包含所有类型语句、通用程序、函数和表单。它在所有其他工作簿中被引用并且始终处于打开状态。用户仅限于两个打开的工作簿 - 菜单和另一个。
该系统位于网络服务器上,并且以用户只能以“只读”方式打开工作簿的方式编写。用户从不保存工作簿,他们总是将数据保存到数据文件中。
基本上我有一个数据库系统,并使用 Excel 作为界面。
我的类型声明是
Public Type CLocDesc
Atv As String * 3
CadName As String * 10
CadDate As Date
EditName As String * 10
EditDate As Date
Empresa As String * 10
OSNo As Integer
ClNo As Integer
Fantasia As String * 30
Cidade As String * 40
UF As String * 2
PedClient As String * 30
InsCid As String * 30
InsUF As String * 2
DtStart As Date
DtEnd As Date
QtMod As Integer
QtAr As Integer
QtOut As Integer
LocMods As Single
LocAr As Single
LocOther As Single
LocVenc As Integer
End Type
Public CLoc As CLocDesc ' This appears at the top of the module.
' LOAD DATA .
Sub LoadData()
Open Range("MDP") + "Rental.rnd" For Random As #1 Len = Len(Cloc)
Nitems = LOF(1) / Len(Cloc) ' Number of records
J = 0 ' Line counter for data table
With Range("DataTable")
For I = 1 To Nitems
' On Error Resume Next
Get #1, I, Cloc ' This command : Error 59 - Bad record length.
' On Error GoTo 0
J = J + 1
.Cells(J, 1) = I
.Cells(J, 2) = Trim(Cloc.CadName)
.Cells(J, 3) = Cloc.CadDate
.Cells(J, 4) = Trim(Cloc.EditName)
.Cells(J, 5) = Cloc.EditDate
.Cells(J, 6) = Trim(Cloc.Atv)
.Cells(J, 7) = Trim(Cloc.Empresa)
.Cells(J, 8) = Cloc.OSNo
.Cells(J, 9) = Cloc.ClNo
.Cells(J, 10) = Trim(Cloc.Fantasia)
.Cells(J, 11) = Trim(Cloc.Cidade)
.Cells(J, 12) = Trim(Cloc.uf)
.Cells(J, 13) = Trim(Cloc.PedClient)
.Cells(J, 14) = Trim(Cloc.InsCid)
.Cells(J, 15) = Trim(Cloc.InsUF)
.Cells(J, 16) = Cloc.DtStart
.Cells(J, 17) = Cloc.DtEnd
.Cells(J, 18) = Cloc.QtMod
.Cells(J, 19) = Cloc.QtAr
.Cells(J, 20) = Cloc.QtOut
.Cells(J, 21) = Cloc.LocMods ' Bad read starts here
.Cells(J, 22) = Cloc.LocAr
.Cells(J, 23) = Cloc.LocOther
.Cells(J, 24) = Cloc.LocOther + Cloc.LocAr + Cloc.LocMods
.Cells(J, 25) = Cloc.LocVenc
Next I
End With
Close
End Sub
Type AllClocDesc
StAll As String * 223
End Type
Dim AllCloc As AllClocDesc
...and ...
Get #1, I, AllCloc
最佳答案
使用 Open For Random
不理想,因为它将字符串从 2 个字节的 BSTR/UTF16 转换为 1 个字节的 ANSI,并且可能会丢失取决于字符。也就是说,您的问题可能是由于竞争条件,或者程序正在尝试加载损坏或不同的记录。
相反,使用 Open For Binary Shared
在不转换的情况下在一次调用中读取/写入数据:
Private Declare PtrSafe Sub MemCpy Lib "kernel32" Alias "RtlMoveMemory" (dst As Any, src As Any, ByVal size As LongPtr)
Const path = "c:\temp\record.bin"
Sub AddRecord()
' dummy record '
Dim record As CLocDesc
record.Atv = "123"
record.LocMods = 1.76
' to binary '
Dim buffer() As Byte
ReDim buffer(0 To LenB(record) - 1)
MemCpy buffer(0), ByVal VarPtr(record), LenB(record)
' check file length is a multiple of the record length '
If Len(Dir(path)) Then If FileLen(path) Mod LenB(record) Then _
Err.Raise 5, , "Unexpected file length"
' to file '
Dim f As Integer
f = FreeFile
Open path For Binary Shared As f
Put f, FileLen(path) + 1, buffer
Close
End Sub
Sub LoadRecords()
' check file length is a multiple of the record length '
Dim record As CLocDesc
If FileLen(path) Mod LenB(record) Then Err.Raise 5, , "Unexpected file length"
' load file to buffer '
Dim f As Integer, p As Long, buffer() As Byte
ReDim buffer(0 To FileLen(path) - 1)
f = FreeFile
Open path For Binary Shared As f
Get f, 1, buffer
Close
' to records '
Dim records() As CLocDesc
ReDim records(0 To FileLen(path) \ LenB(record) - 1)
MemCpy ByVal VarPtr(records(0)), buffer(0), UBound(buffer) + 1
End Sub
Recordset
将记录保存到文件/从文件加载记录:
' Required reference: Microsoft ActiveX Data Objects '
Sub UsageRecordset()
Dim rs As ADODB.Recordset, fields As ADODB.fields, i As Long
' create a recordset, define the fields and save it to a file '
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
Set fields = rs.fields
fields.Append "Id", adBSTR, 8
fields.Append "Price", adDouble
rs.Open
rs.Save "c:\temp\records.dat"
rs.Close
' add some records '
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "c:\temp\records.dat"
rs.AddNew
rs("Id").value = "kt547865"
rs("Price").value = 4.7
rs.AddNew
rs("Id").value = "kt986543"
rs("Price").value = 2.3
rs.Save
rs.Close
' read all the records to a sheet '
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "c:\temp\records.dat"
rs.MoveFirst
ActiveSheet.Range("A2").CopyFromRecordset rs
rs.Close
' iterate all the records '
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "c:\temp\records.dat"
rs.MoveFirst
For i = 1 To rs.RecordCount
Debug.Print rs("Id").value
Debug.Print rs("Price").value
rs.MoveNext
Next
rs.Close
' find a specific record '
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "c:\temp\records.dat", LockType:=adLockReadOnly
rs.MoveFirst
rs.Find "[Price] < 5", , 1, 2
If Not rs.EOF Then
Debug.Print rs("Id").value
Debug.Print rs("Price").value
End If
rs.Close
End Sub
关于vba - 用户定义类型读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47701646/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!