Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
жека3
14 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 238
#1

Текст из таблицы на форму в надпись

25.01.2013, 21:50. Просмотров 1533. Ответов 17
Метки нет (Все метки)

Добрый Всем день.
Нужно текст из таблицы поместить на форму в готовые надписи.Если возможен варианнт с созданием надписей на голой форме согласно текста таблицы,буду очень признателен.
Зараннее благодарю.
0
Вложения
Тип файла: rar db1.rar (7.1 Кб, 19 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2013, 21:50
Ответы с готовыми решениями:

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

Как надпись сделать подписью для элемента управления или столбца таблицы?
Здравствуйте! Подскажите пожалуйста, как надпись, размещённую далеко от поля...

Вынос таблицы на форму
Приветствую всех. Нашел в интернете базу с необходимым примером, но не могу...

Как сделать форму из таблицы?
на рисунке вы видите запрос внутри формы . я когда то куда то нажал и этот...

Обновление таблицы через форму
Добрый день! Помгите пожалуйста с таким вопросом - есть таблица в Access (10...

17
tpychev
13 / 13 / 1
Регистрация: 22.01.2013
Сообщений: 38
26.01.2013, 04:01 #2
В надпись не знаю
Но я делаю так
1
Вложения
Тип файла: rar db1.rar (10.5 Кб, 25 просмотров)
жека3
14 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 238
26.01.2013, 15:03  [ТС] #3
Тоже вариант,когда одна таблица.А таблиц много.
0
alvk
Эксперт MS Access
5559 / 3456 / 167
Регистрация: 12.08.2011
Сообщений: 8,760
28.01.2013, 08:24 #4
жека3, вы не могли бы выставить пример с "таблиц много" и поконкретнее описать задачу?
1
tpychev
13 / 13 / 1
Регистрация: 22.01.2013
Сообщений: 38
28.01.2013, 14:21 #5
Цитата Сообщение от alvk Посмотреть сообщение
жека3, вы не могли бы выставить пример с "таблиц много" и поконкретнее описать задачу?
мне тоже не очень понятно. Пример бы
1
жека3
14 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 238
30.01.2013, 17:27  [ТС] #6
Например.Открывается форма1 и на ней должно появиться содержимое из поля text табл.1 в виде надписей.
0
Вложения
Тип файла: rar db1.rar (7.2 Кб, 15 просмотров)
tpychev
13 / 13 / 1
Регистрация: 22.01.2013
Сообщений: 38
30.01.2013, 22:12 #7
1) надо подключить форму к источнику данных. Ведь какая-то связь между данными в разных таблицах у тебя есть. (не думаю, что тебе нужно произвольную строку из произвольного поля, произвольной таблицы)
2)можно создать запрос с полями которые нужно отобразить, а дальше по примеру который выше
3) ну а если просто запись без связи с информацией которая будет отображаться в форме, то через VBA
1
жека3
14 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 238
30.01.2013, 22:25  [ТС] #8
интересует вопрос ,чтоб текст забивался именно в надписи т.к. они могут располагаться хаотично на форме.
0
alvk
Эксперт MS Access
5559 / 3456 / 167
Регистрация: 12.08.2011
Сообщений: 8,760
31.01.2013, 02:57 #9
Лучший ответ Сообщение было отмечено как решение

Решение

Есть пример создания кнопок, если сможете переделать на надписи - пробуйте.
3
Вложения
Тип файла: rar Создание элементов.rar (24.2 Кб, 27 просмотров)
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
31.01.2013, 08:44 #10
Цитата Сообщение от жека3 Посмотреть сообщение
текст из таблицы поместить на форму в готовые надписи.Если возможен варианнт с созданием надписей на голой форме согласно текста таблицы,буду очень признателен.
Процедура:
Кликните здесь для просмотра всего текста
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Sub CreateLablesFromFields()
On Error GoTo Err_Handle
Dim i As Integer, strSource As String, strName As String
Dim db As Database: Set db = CurrentDb
Dim rst As DAO.Recordset
Dim frm As Form, ctlLbl As Control
Dim intX As Integer, intY As Integer  'Координаты верхнего левого угла в твипах
Dim intW As Integer, intH  As Integer 'Ширина, высота надписи в твипах (1 см = 567 твип)
intX = 567: intY = 100
intW = 5670: intH = 567
strSource = "SELECT [text] FROM Таблица1"     'Значения только из Таблицы 1
strSource = strSource & " UNION ALL SELECT [text] FROM Таблица2"  'из 1 и 2
strSource = strSource & " UNION ALL SELECT [text] FROM Таблица3"  'из 1, 2 и 3
 
'                            Новая форма
Set frm = CreateForm
strName = frm.Name
With frm
    .Caption = "Создание надписей на голой форме согласно текста таблицы"   'Заголовок
    .RecordSource = ""              'Источник данных
    .AutoResize = False             'Автоматический размер
    .AutoCenter = True              'Выравнивание по центру
    .PopUp = False                  'Всплывающее окно - отображается над всеми остальными окнами Microsoft Access
    .Modal = False                  'Модальное окно (для перевода фокуса на другой объект необходимо предварительно закрыть форму)
    .BorderStyle = 3                'Тип границы
    .Tag = ""                       'Дополнительные сведения
    .HasModule = False              'Наличие модуля класса
    .RecordSelectors = False        'Область выделения
    .ScrollBars = False             'Полосы прокрутки
    .Moveable = True                'Перемещение
    .NavigationButtons = False      'Кнопоки перехода и поле номера записи
    .ControlBox = True              'Оконное меню формы
    .CloseButton = True
End With
'                               Надписи
 
Set rst = db.OpenRecordset(strSource, dbOpenForwardOnly, dbReadOnly)
    Do Until rst.EOF
        Set ctlLbl = CreateControl(strName, acLabel, , "", "", intX, intY, intW, intH)
            With ctlLbl
                .Caption = rst.Fields(0)    'Подпись (текст, который выводится)
                .Name = "lbl_" & Format(i, "00")
                .Visible = True             'Вывод на экран
                .BackStyle = 1              'Тип фона
                .BackColor = 8421631        'Цвет фона
                .BorderStyle = 1            'Тип границы
                .BorderColor = RGB(0, 0, 0) 'Цвет границы
                .BorderWidth = 2            'Ширина границы
                .ForeColor = RGB(0, 0, 0)   'Цвет текста
                .FontName = "Tahoma"        'Шрифт"
                .FontSize = 12              'Размер шрифта
                .FontItalic = False         'Наклонный
                .FontUnderline = False      'Подчеркнутый
                .FontWeight = 500           'Насыщенность
                .TextAlign = 2              'Выравнивание текста
                .SpecialEffect = 3          'Оформление
                .ControlTipText = rst.Fields(0) 'Всплывающая подсказка(только в формах)
                .HyperlinkAddress = ""          'Адрес гиперссылки (путь к объекту, документу, странице Web или другим файлам)
                .HyperlinkSubAddress = ""       'Дополнительный адрес - определенного места в пределах документа, указанного в свойстве Адрес гиперссылки
                .ShortcutMenuBar = ""           'Контекстное меню
                .Tag = ""                       'Дополнительные сведения
                .DisplayWhen = 0                'Режим вывода - на экран или на печать (только в формах)
                .InSelection = False            'Выделена ли в режиме конструктора (только в формах)
            End With
        rst.MoveNext
        intY = intY + intH + 100
        i = i + 1
    Loop
    With DoCmd
        On Error Resume Next
        .DeleteObject acForm, "Форма2"
        .Close acForm, strName, acSaveYes
        .Rename "Форма2", acForm, strName
        .OpenForm "Форма2", acNormal
    End With
DoCmd.Restore
Err_End:
    On Error Resume Next
    rst.Close: Set rst = Nothing
    Set ctlLbl = Nothing: Set frm = Nothing
    Exit Sub
Err_Handle:
    MsgBox Err.Number & " " & Err.Description
    Resume Err_End
End Sub

Создаётся новая форма, на ней - надписи.
Вызов, например, кнопкой:
vb.net
1
2
3
Private Sub Кнопка_Click()
CreateLablesFromFields
End Sub
1
alvk
Эксперт MS Access
5559 / 3456 / 167
Регистрация: 12.08.2011
Сообщений: 8,760
31.01.2013, 09:39 #11
Андрэич, а со старой формой слабо?
1
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
31.01.2013, 09:59 #12
Цитата Сообщение от alvk Посмотреть сообщение
Андрэич, а со старой формой слабо?
Ога
Кроме с бубнами ничего в голову не идёт...
1
alvk
Эксперт MS Access
5559 / 3456 / 167
Регистрация: 12.08.2011
Сообщений: 8,760
31.01.2013, 10:19 #13
Андрэич, в примере, что я выложил, всё работает, осталось только переделать, приложить так сказать усилия, но у меня просто столько времени нет.
1
жека3
14 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 238
31.01.2013, 11:53  [ТС] #14
Cпасибо,буду разбираться
0
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
31.01.2013, 12:30 #15
alvk, я правильно понимаю, что без этой твоей библиотеки из этой же формы не сделать в ней самой?
Цитата Сообщение от alvk Посмотреть сообщение
в примере, что я выложил, всё работает, осталось только переделать, приложить так сказать усилия
Смотря как ТСу, может его и "снаружи" устроит - созданием формы (вообще, дело мутное, конечно... :-) )
1
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
01.02.2013, 14:23 #16
Цитата Сообщение от alvk Посмотреть сообщение
Андрэич осталось только переделать времени нет.
Переделал (во вложении) - заменил кнопки на надписи. Получилось не очень долго, там всего несколько копипастов оказалось. В принципе, поменять на другие контролы легко.

Заодно попробовал то же самое сделать, но программно, для универсальности - кодом редактировать модули, да застрял.
Выскакивает окошко, я таких раньше не видел: Can't enter breake mode at this time, и кнопка дебага неактивна.
Жму Продолжить - она делает одну замену и без ошибок сама как-то выходит из цикла. Вот что пишет хэлп:

Break mode is the state in which a program is still running, but its activity is suspended. This error has the following cause and solution:
You tried to enter break mode, for example, by pressing CTRL+BREAK (Windows) or COMMAND+PERIOD (Macintosh), pressing the Break button on the Standard toolbar or the Debug toolbar, or by executing a breakpoint in the running code.
A change was made programmatically to the project using the extensibility (add-in) object model. This prevents the program from having execution suspended. You can continue running, or end execution, but can't suspend execution.


Первую итерацию делает, можно сказать, нормально. Может, там вообще на больше, чем одна замена, методы не расчитаны? Или обновляться не успевает, оператора какого не хватает или я про что-то не так понял (В принципе, VBE ещё можно попробовать...).

Кого не затруднит, посмотрите, пожалуйста, что не так. Долго уже сижу, не могу понять...
Спасибо

Код:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Public Sub ButtonsToLabels()
On Error GoTo Err_Hahdle
Dim mdl As Module, strModuleName As String
Dim lngSLine As Long, lngSCol As Long
Dim lngELine As Long, lngECol As Long
Dim intChr As Integer
Dim strLine As String, strNewLine As String
Dim strLeft As String, strRight As String
Dim intBefore As Integer, intAfter As Integer
Dim lngNumLines As Long
Dim i As Integer, j As Integer
'-----------------------------------------------------------------------------------------------
'                 Копирование и переименовывание модулей
'-----------------------------------------------------------------------------------------------
Dim arrCmd As Variant, arrLbl As Variant
arrCmd = Array("CCommandButtons", "CCommandButtonRelay", "CCommandButton")
arrLbl = Array("CLabels", "CLabelRelay", "CLabel")
    For i = 0 To 2
        DoCmd.CopyObject , arrLbl(i), acModule, arrCmd(i)
    Next i
'Здесь не всегда может найти сохранённый и переименованный уже модуль
'(на второй картинке его видно ), а потом после сжатия находит
'...........................
'------------------------------------------------------------------------------------------------
'                   Замены в скопированных модулях
'------------------------------------------------------------------------------------------------
Dim arrSearchText As Variant, arrNewText As Variant
arrSearchText = Array("CommandButton", "CmdButton", "CmdBtn", "Buttons", "Button", "m_Relay")
arrNewText = Array("Label", "Lbel", "Lbl", "Labels", "Labbel", "m_Relay_lbl")
    For i = 0 To 2
        DoCmd.OpenModule arrLbl(i)     ' Открывает модуль
        Set mdl = Modules(arrLbl(i))   ' Возвращает ссылку на объект Module
        For j = 0 To 5
            Do While mdl.Find(arrSearchText(j), lngSLine, lngSCol, lngELine, lngECol)
                ' Сохраняет строку модуля, содержащую найденный текст:
                strLine = mdl.Lines(lngSLine, Abs(lngELine - lngSLine) + 1)
                ' Определяет длину строки:
                intChr = Len(strLine)
                ' Определяет число символов перед найденным текстом:
                intBefore = lngSCol - 1
                ' Определяет число символов после найденного текста:
                intAfter = intChr - CInt(lngECol - 1)
                ' Сохраняет символы слева от найденного текста:
                strLeft = Left$(strLine, intBefore)
                ' Сохраняет символы справа от найденного текста:
                strRight = Right$(strLine, intAfter)
                ' Создает строку, содержащую текст замещения:
                strNewLine = strLeft & arrNewText(j) & strRight
                ' Замещает исходную строку модуля:
                mdl.ReplaceLine lngSLine, strNewLine        'Вот на этой строке!
            Loop
        Next j
    Next i
Err_End:
    Exit Sub
Err_Hahdle:
    MsgBox Err.Number & ": " & Err.Description
End Sub
1
Миниатюры
Текст из таблицы на форму в надпись   Текст из таблицы на форму в надпись  
Вложения
Тип файла: zip Friend_Sub_alvk.zip (51.3 Кб, 12 просмотров)
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
01.02.2013, 17:19 #17
Вобщем, и замена на VBE-VBIDE -
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
Dim objVBProj As VBIDE.VBProject
Dim objVBComp As VBIDE.VBComponent
Dim objCodeMod As VBIDE.CodeModule
Set objVBProj = Access.VBE.ActiveVBProject
Set objVBComp = objVBProj.VBComponents(arrLbl(i))
Set objCodeMod = objVBComp.CodeModule
    ...objCodeMod.Find(...
    ...objCodeMod.Lines(...
    ...objCodeMod.ReplaceLine  ...

- не помогла, то же сообщение... Что же я не так делаю???
1
жека3
14 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 238
01.02.2013, 20:51  [ТС] #18
А вот это джек пот.Сенкью.
0
01.02.2013, 20:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2013, 20:51

Слив данных из таблицы в форму
Помогите пожалуйста. У меня есть форма 1, в ней поля. И есть таблица1. Мне...

Вывод информации из таблицы на Форму
Здравствуйте! У меня есть форма производители, на ней выводятся производители...

Создание таблицы через форму
помогите( 1.создайте таблицу. 2.создайте форму и с помощью формы создайте...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru