在Vb6中删除随机文件中的记录
我正试图用Vb6和记事本管理一个相当小的数据库。 我将所有记录随机收集到记事本文件(.dat)中。 我使用Get和Put命令获取存储的记录并插入最新的记录。 现在我想有可能删除我输入的记录(可能是最新的)。 我认为:在Vb6中删除随机文件中的记录,vb6,record,Vb6,Record,我正试图用Vb6和记事本管理一个相当小的数据库。 我将所有记录随机收集到记事本文件(.dat)中。 我使用Get和Put命令获取存储的记录并插入最新的记录。 现在我想有可能删除我输入的记录(可能是最新的)。 我认为: Delete #FileNumber1, LatestRec, MyRec 这是一个很好的机会。 LatestRec是最新记录的编号(例如:5表示第5条)。 MyRec是我的记录变量。 有什么建议吗?您在上面提到的删除语句不适用于随机访问文件。不幸的是,VB6随机访问文件没有提供
Delete #FileNumber1, LatestRec, MyRec
这是一个很好的机会。
LatestRec是最新记录的编号(例如:5表示第5条)。
MyRec是我的记录变量。
有什么建议吗?您在上面提到的删除语句不适用于随机访问文件。不幸的是,VB6随机访问文件没有提供记录删除的直接机制,主要是因为删除会导致其他问题,例如文件收缩(填充空白)、碎片(未使用的空白),等等。如果您确实需要删除一条记录,那么您唯一的选择就是将所有其他记录复制到一个临时文件中,删除旧文件,然后将临时文件重命名为“原始”名称——遗憾的是,这是来自Microsoft的 您可以做的一件事(我承认这并不理想)是在随机访问文件中添加一个“已删除”字段,默认为0,但更改为true、1或其他相关值,以指示记录不再有效 您甚至可以编写例程来重用已删除的记录,但如果您对文件语义有那么多的了解,那么考虑将应用程序迁移到更健壮的数据库环境(如SQL Server)可能会更好 *编辑:*下面是一段非常粗糙/粗糙/未经测试的VB6示例代码,它显示了如何使用我上面描述的“已删除字段”概念删除/添加记录。请注意,可能需要进行一些调整才能使此代码变得完美,但重点是为您演示此概念:
Type SampleRecord
UserID As Long
lastName As String * 25
firstName As String * 25
Deleted As Boolean
End Type
' This logically deletes a record by setting
' its "Deleted" member to True
Sub DeleteRecord(recordId As Long)
Dim targetRecord As SampleRecord
Dim fileNumber As Integer
fileNumber = FreeFile
Open "SampleFile" For Random As fileNumber Len = LenB(SampleRecord)
Get fileNumber, recordId, targetRecord
targetRecord.Deleted = True
Put #fileNumber, recordId, targetRecord
Close #fileNumber
End Sub
Sub AddRecord(lastName As String, firstName As String)
Dim newRecord As SampleRecord
Dim fileNumber As Integer
Dim newRecordPosition As Long
newRecord.firstName = firstName
newRecord.lastName = lastName
newRecord.Deleted = False
newRecord.UserID = 123 ' assume an algorithm for assigning this value
fileNumber = FreeFile
Open "SampleFile" For Random As fileNumber Len = LenB(SampleRecord)
newRecordPosition = LOF(fileNumber) / LenB(SampleRecord) + 1
Put #fileNumber, newRecordPosition, newRecord
Close #fileNumber
End Sub
如何将0和1设置为记录?我将为数据库的布局创建一个“结构”或“记录”,并在其中添加字段。如果需要删除记录,请使用GET将该记录提取到该“记录”的变量中,将其“已删除”字段设置为1,然后将该记录“放回”文件。在应用程序的其余部分中使用记录时,需要考虑该值。