В одном столбце таблицы БД заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки - VB
Формулировка задачи:
Добрый день.
Есть таблица .dbf и надо в одном столбце заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки.
Решение задачи: «В одном столбце таблицы БД заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки»
textual
Листинг программы
- Sub Main()
- Dim flg As Boolean
- Dim fldNam(1 To 20) As String
- Dim fldOff(1 To 20) As String
- Dim fldLen(1 To 20) As String
- dbf$ = Application.GetOpenFilename("Файлы dbf,*.dbf", , "Выбирайте файл")
- If UCase$(dbf$) = "FALSE" Or UCase$(dbf$) = "ЛОЖЬ" Then Exit Sub
- fi% = FreeFile
- Open dbf$ For Binary Access Read Write As #fi%
- Seek fi%, 5
- Get #fi%, , Nrec&
- Get #fi%, , OffBeg%
- Get #fi%, , Lrec%
- p& = 33
- n% = 0
- Do
- Seek #fi%, p&
- C11$ = Space$(11)
- Get #fi%, , C11$
- If Left$(C11$, 1) = Chr$(13) Then Exit Do
- n% = n% + 1
- k% = InStr(C11$, Chr$(0))
- If k% = 0 Then
- fldNam(n%) = C11$
- Else
- fldNam(n%) = Left(C11$, k% - 1)
- End If
- tmp$ = " "
- Get #fi%, , tmp$
- Get #fi%, , Off&
- Get #fi%, , ll%
- fldOff(n%) = Off& + 1
- fldLen(n%) = ll%
- p& = p& + 32
- Loop
- For i% = 1 To n%
- If UCase$(fldNam(i%)) = "NPRIK" Then
- Off_Nprik% = fldOff(i%)
- Len_Nprik% = fldLen(i%)
- ElseIf UCase$(fldNam(i%)) = "DATA_PR" Then
- Off_Datapr% = fldOff(i%)
- Len_Datapr% = fldLen(i%)
- ElseIf UCase$(fldNam(i%)) = "DATN" Then
- Off_Datn% = fldOff(i%)
- Len_Datn% = fldLen(i%)
- End If
- Next i%
- Seek #fi%, OffBeg% + 1
- For iii& = 1 To Nrec&
- Application.StatusBar = "Обработка записи " + CStr(iii&)
- Buf$ = Space$(Lrec%)
- Get #fi%, , Buf$
- flg = False
- If Mid$(Buf$, Off_Nprik%, Len_Nprik%) = Space$(Len_Nprik%) Then
- Mid$(Buf$, Off_Nprik%, 1) = "-"
- flg = True
- End If
- If Mid$(Buf$, Off_Datapr%, Len_Datapr%) = Space$(Len_Datapr%) Then
- Mid$(Buf$, Off_Datapr%, Len_Datapr%) = Mid$(Buf$, Off_Datn%, Len_Datn%)
- flg = True
- End If
- If flg Then
- ppp& = Loc(fi%)
- Seek fi%, ppp& - Lrec% + 1
- Put #fi%, , Buf$
- End If
- Next iii&
- Close #fi%
- Application.StatusBar = ""
- MsgBox "Готово!"
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д