В одном столбце таблицы БД заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д