Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2017, 10:38   #1
petrzhebin
Новичок
Джуниор
 
Регистрация: 25.09.2017
Сообщений: 3
По умолчанию База оборудования. Помогите.

Имею базу оборудования. Каждая строка это одно оборудование. Но бывает и такое оборудование у которого несколько составляющих, соответственно к одному номеру гарантийного талона добавляется еще строчка. Но что бы правильно работал поиск необходимо мне указывать в следующей строке такой же номер гарантийного талона и дублировать все остальные данные (например, когда, куда и кому)-это очень сильно загрязняет базу. Как сделать чтобы гарантийный номер талона был один, а оборудование к ему прописывалось ниже и чтоб корректно работал поиск.
И второй вопрос. В базе существует вкладка гарантийный талон, после того как я в базе кликаю двойным кликом мышки на номер гарантийного талона, открывается лист гарантийного талона и туда автоматически заполняются данные с базы. НО..что я упоминал в начале, к одному номеру гарантийного талона присвоено еще оборудование как и его автоматически заполнить ниже строкой в листе гарантийного талона? Т.е. как создать в листе гарантийного талона две или три строки с данными гарантийного талона по условию что одинакового №гар.талона?
petrzhebin вне форума Ответить с цитированием
Старый 25.09.2017, 10:51   #2
vefer
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 134
По умолчанию

Не лучше ли это все в каком нибудь акцессе сделать?
vefer вне форума Ответить с цитированием
Старый 25.09.2017, 10:52   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если на несколько отдельных позиций выписывается 1 гарантийный талон - никуда не деться от необходимости заполнять соответсвующее количество строк
а вот по двойному клику получение в бланк всех позиций по данному гарантийному, а не только той, по которой кликнули - это практически стандартная задача и решается она довольно легко.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.09.2017, 11:01   #4
petrzhebin
Новичок
Джуниор
 
Регистрация: 25.09.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
если на несколько отдельных позиций выписывается 1 гарантийный талон - никуда не деться от необходимости заполнять соответсвующее количество строк
а вот по двойному клику получение в бланк всех позиций по данному гарантийному, а не только той, по которой кликнули - это практически стандартная задача и решается она довольно легко.
Сейчас у меня решается так:
Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error Resume Next
    If Target.Column = 2 And Target.Row > 2 Then
        Select Case MsgBox("Заполнить гарантийный талон?", vbYesNo + vbQuestion, "Подтвердите действие")
            Case vbYes
                Cancel = True
                Dim sh As Worksheet, c1 As Range: Set sh = ActiveWorkbook.Worksheets("ГарТалон")
                If sh Is Nothing Then Beep 100, 100: MsgBox "Отсутствует лист ГарТалон", vbCritical, "Ошибка": Exit Sub
                Set c1 = Target.EntireRow.Cells(1)

                ' на всякий случай сначала очищаем ячейки (чтобы заведомо избавиться от прежних данных)
                sh.Range("номер").FormulaR1C1 = ""
                sh.Range("дата").FormulaR1C1 = ""
                sh.Range("предприятие").FormulaR1C1 = ""
                sh.Range("город").FormulaR1C1 = ""
                sh.Range("наименование").FormulaR1C1 = ""
                sh.Range("серийник").FormulaR1C1 = ""
               
                ' записываем значения (полям в КАРТОЧКЕ присвоены имена)
                sh.Range("номер").Value = c1.Offset(, 1).Value
                sh.Range("предприятие").Value = c1.Offset(, 6).Value
                sh.Range("дата").Value = c1.Offset(, 0).Value
                sh.Range("город").Value = c1.Offset(, 7).Value
                sh.Range("наименование").Value = c1.Offset(, 2).Value & " " & c1.Offset(, 3).Value
                sh.Range("серийник").Value = c1.Offset(, 4).Value
                
                sh.Activate    ' активируем лист КАРТОЧКА
                Beep 800, 50
            Case Else
                Cancel = False
        End Select
    End If
End Sub
А как с добавлением второй строки? Раз это действительно просто.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 25.09.2017 в 11:29.
petrzhebin вне форума Ответить с цитированием
Старый 25.09.2017, 11:17   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если есть 2 строки с одним гарантийным - логично допустить, что их может быть и больше
и задачу есть смысл решать не на добавление 2-й строки, а на добавление ВСЕХ строк с данным гарантийным.
замечательный макрос, но нужен пример файла для понимание того что и куда писать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.09.2017, 11:28   #6
petrzhebin
Новичок
Джуниор
 
Регистрация: 25.09.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
если есть 2 строки с одним гарантийным - логично допустить, что их может быть и больше
и задачу есть смысл решать не на добавление 2-й строки, а на добавление ВСЕХ строк с данным гарантийным.
замечательный макрос, но нужен пример файла для понимание того что и куда писать
Только пришлось поддержку маркоса отключить чтоб сюда выложить
Вложения
Тип файла: xlsx Эксперимент С БАЗОЙ1.xlsx (261.4 Кб, 18 просмотров)
petrzhebin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите вернуть управление сайтом. Админпанель и база mysql Alexzon PHP 4 22.08.2017 13:19
Помогите написать запрос, база ms access Paul Hindenburg SQL, базы данных 0 07.11.2008 13:51
база студентов (помогите мне) Павел Алексеевич Помощь студентам 2 05.03.2008 14:25