В одном столбце таблицы БД заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки - VB

Узнай цену своей работы

Формулировка задачи:

Добрый день. Есть таблица .dbf и надо в одном столбце заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки.

Решение задачи: «В одном столбце таблицы БД заменить все пустые ячейки на содержимое ячеек в другом столбце из той же строки»

textual
Листинг программы
  1. Sub Main()
  2. Dim flg             As Boolean
  3. Dim fldNam(1 To 20) As String
  4. Dim fldOff(1 To 20) As String
  5. Dim fldLen(1 To 20) As String
  6.     dbf$ = Application.GetOpenFilename("Файлы dbf,*.dbf", , "Выбирайте файл")
  7.     If UCase$(dbf$) = "FALSE" Or UCase$(dbf$) = "ЛОЖЬ" Then Exit Sub
  8.     fi% = FreeFile
  9.     Open dbf$ For Binary Access Read Write As #fi%
  10.     Seek fi%, 5
  11.     Get #fi%, , Nrec&
  12.     Get #fi%, , OffBeg%
  13.     Get #fi%, , Lrec%
  14.     p& = 33
  15.     n% = 0
  16.     Do
  17.        Seek #fi%, p&
  18.        C11$ = Space$(11)
  19.        Get #fi%, , C11$
  20.        If Left$(C11$, 1) = Chr$(13) Then Exit Do
  21.        n% = n% + 1
  22.        k% = InStr(C11$, Chr$(0))
  23.        If k% = 0 Then
  24.           fldNam(n%) = C11$
  25.        Else
  26.           fldNam(n%) = Left(C11$, k% - 1)
  27.        End If
  28.        tmp$ = " "
  29.        Get #fi%, , tmp$
  30.        Get #fi%, , Off&
  31.        Get #fi%, , ll%
  32.        fldOff(n%) = Off& + 1
  33.        fldLen(n%) = ll%
  34.        p& = p& + 32
  35.     Loop
  36.     For i% = 1 To n%
  37.         If UCase$(fldNam(i%)) = "NPRIK" Then
  38.            Off_Nprik% = fldOff(i%)
  39.            Len_Nprik% = fldLen(i%)
  40.         ElseIf UCase$(fldNam(i%)) = "DATA_PR" Then
  41.            Off_Datapr% = fldOff(i%)
  42.            Len_Datapr% = fldLen(i%)
  43.         ElseIf UCase$(fldNam(i%)) = "DATN" Then
  44.            Off_Datn% = fldOff(i%)
  45.            Len_Datn% = fldLen(i%)
  46.         End If
  47.     Next i%
  48.     Seek #fi%, OffBeg% + 1
  49.     For iii& = 1 To Nrec&
  50.         Application.StatusBar = "Обработка записи " + CStr(iii&)
  51.         Buf$ = Space$(Lrec%)
  52.         Get #fi%, , Buf$
  53.         flg = False
  54.         If Mid$(Buf$, Off_Nprik%, Len_Nprik%) = Space$(Len_Nprik%) Then
  55.            Mid$(Buf$, Off_Nprik%, 1) = "-"
  56.            flg = True
  57.         End If
  58.         If Mid$(Buf$, Off_Datapr%, Len_Datapr%) = Space$(Len_Datapr%) Then
  59.            Mid$(Buf$, Off_Datapr%, Len_Datapr%) = Mid$(Buf$, Off_Datn%, Len_Datn%)
  60.            flg = True
  61.         End If
  62.         If flg Then
  63.            ppp& = Loc(fi%)
  64.            Seek fi%, ppp& - Lrec% + 1
  65.            Put #fi%, , Buf$
  66.         End If
  67.     Next iii&
  68.     Close #fi%
  69.     Application.StatusBar = ""
  70.     MsgBox "Готово!"
  71. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы