powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставка всех полученных строк sql-запроса (Oracle) в Textbox
7 сообщений из 7, страница 1 из 1
Вставка всех полученных строк sql-запроса (Oracle) в Textbox
    #37478068
NeverAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подключаюсь к базе Oracle из Word VBA по средствам OO4O. Из базы выбираю данные обычным sql-запросом, используя oradynaset. Хочу организовать вставку данных в TextBox, т.е. addTextBox.TextFrame.TextRange = select * from table. Но после отработки макроса, вставляется лишь первая полученная строка. При помощи Do While Not Oradynaset.EOF ... Loop смог добиться вставки всех строк селекта в документ, но при этом на каждую строку создавался новый TextBox.
Макрос выложу завтра.
Если у кого есть примеры или подобные вещи, буду рад увидеть!
...
Рейтинг: 0 / 0
Вставка всех полученных строк sql-запроса (Oracle) в Textbox
    #37478091
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Примерами и подобными вещами" интернет забит чуть менее чем наполовину. Вопрос четко сформулируйте и будет вам счастье.
...
Рейтинг: 0 / 0
Вставка всех полученных строк sql-запроса (Oracle) в Textbox
    #37478596
NeverAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Макрос sql-запросом получает данные из базы Oracle псоле открытия документа Word из определнной директории. У меня не получается загнать все данные результата запроса в TextBox.

Сам макрос
Код: plaintext
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.
Sub SilverBullet()

'Connection to Oracle with OO4O (Oracle object for OLE)
'Tools -> References.. -> Select <Oracle InProc Server 5.0 Type Library>
Dim oraSession  As Object
Dim oraDatabase As Object
Dim OraDynaset As OraDynaset
Dim OraFields As OraFields
Dim FieldDoc, FieldPol, FieldStat As String
Dim DocName As String

Dim strDocName As String
Dim strPath As String
Dim strAny As String
Dim ldDoc As Document
Dim strAnyWord As String
Dim vprint As String

'for testing
Dim lines() As String

    Set ldDoc = ActiveDocument
'File name without extention .doc or .docx
    strDocName = Left(ldDoc.Name, InStr( 1 , ldDoc.Name, ".") -  1 )

'Fullpath of file
    strPath = ldDoc.Path
    'strAny = ldDoc.Content  'Insert text from file in object
    strAnyWord = "Doc:"
       
    Set oraSession = CreateObject("OracleInProcServer.XOraSession")
'Connection parameter
    Set oraDatabase = oraSession.OpenDatabase("landocst", "dbo/dbo",  0 )
    'MsgBox "Connected to " & oraDatabase.Connect & "@" & oraDatabase.DatabaseName

'Create the OraDynaset Object.
'if you are not call parameter for Bind variable, your SQl statment will ejected error
    oraDatabase.Parameters.Add "var1", strDocName,  1 
    
    Set OraDynaset = oraDatabase.CreateDynaset(" SELECT ver.""FileName"" as NameDoc, voc.""Name"" as Pol, stat.""Name"" as StatName " _
   & "FROM dbo.ldmail mail, DBO.LDERC erc, DBO.LDMAILSTATE stat, DBO.LDVOCABULARY voc, DBO.ldversion ver " _
   & "WHERE erc.""ID"" = mail.""ERCID"" AND ver.""FileName"" = :var1 AND erc.""ID"" = ver.""DocID"" AND erc.""JournalID"" = 340470 " _
   & " AND mail.""ReceiverID"" = voc.""ID"" AND mail.""MailStateID"" in (2,4,6) AND mail.""MailTypeID"" = 340468 AND mail.""MailStateID"" = stat.""ID"" ",  0 &)
                                      
    Do While Not OraDynaset.EOF
    
'You can now display or manipulate the data in the dynaset. For example:
        Set OraFields = OraDynaset.Fields
        FieldPol = OraFields("Pol").Value
        FieldStat = OraFields("StatName").Value
        OraDynaset.MoveNext
    
        lines(i) = Split(strAnyWord & " " & strDocName & "  " & FieldPol & " -> " & FieldStat, vbCrLf)
    
    Loop
    
'Insert data in textbox
    With ldDoc.Shapes.AddTextbox(msoTextOrientationHorizontal,  440 ,  790 ,  170 ,  50 )
        .LockAspectRatio = msoTrue
        .LockAspectRatio = msoTrue
        .Line.Visible = msoFalse    'Hide lines
        .Select (lines(i))
        .TextFrame.TextRange.Text = lines(i) 'strAnyWord & " " & strDocName & " " & FieldPol & " ->  " & FieldStat '& vbCrLf &
        .TextFrame.TextRange.Font.Name = "Times New Romans"  'Font
        .TextFrame.TextRange.Font.Size =  9      'Size font
        '.TextFrame.TextRange.Font.Bold = True  'Font is Bold
    End With
    
End Sub
...
Рейтинг: 0 / 0
Вставка всех полученных строк sql-запроса (Oracle) в Textbox
    #37479237
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По коду видно, что счетчик в lines(i) не объявлен и не меняется, следовательно выводиться будут данные только последней записи. Подозреваю, что перед публикованием здесь этого кода вы вынесли блок With за пределы цикла, ибо лишь будучи в нем он может создавать по текстбоксу на каждую запись.
...
Рейтинг: 0 / 0
Вставка всех полученных строк sql-запроса (Oracle) в Textbox
    #37479262
NeverAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy По коду видно, что счетчик в lines(i) не объявлен и не меняется, следовательно выводиться будут данные только последней записи. Подозреваю, что перед публикованием здесь этого кода вы вынесли блок With за пределы цикла, ибо лишь будучи в нем он может создавать по текстбоксу на каждую запись.

На объявление переменной i не обращайте внимания, я просто скинул старый текст макроса, без редакции.
Насчет внесения блока With в цикл знаю, но мне не нужно на каждую запись создавать новый textbox. Мне нужно все вернувшиеся записи sql-запроса вставить только в один textbox. Но как это сделать не знаю =(
...
Рейтинг: 0 / 0
Вставка всех полученных строк sql-запроса (Oracle) в Textbox
    #37479267
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim ы as String

Do ...
ы = ы & rs("Field1").Value
....
Loop
...
textbox.Text = ы
ы????
...
Рейтинг: 0 / 0
Вставка всех полученных строк sql-запроса (Oracle) в Textbox
    #37479343
NeverAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_OneDim ы as String

Do ...
ы = ы & rs("Field1").Value
....
Loop
...
textbox.Text = ы

ы????

Помогло=)) Спс. Видел же этот пример в просторах инета, но как-то не дошли руки проверить. Сча выкину отредактированный макрос.

Код: plaintext
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.
Sub SilverBullet()

'Connection to Oracle with OO4O (Oracle object for OLE)
'Tools -> References.. -> Select <Oracle InProc Server 5.0 Type Library>
Dim oraSession  As Object
Dim oraDatabase As Object
Dim OraDynaset As OraDynaset
Dim OraFields As OraFields
Dim FieldDoc, FieldPol, FieldStat As String
Dim DocName As String

Dim strDocName As String
Dim strPath As String
Dim ldDoc As Document
Dim strAnyWord As String

'for testing
Dim lines() As String
Dim text1 As String

    Set ldDoc = ActiveDocument
'File name without extention .doc or .docx
    strDocName = Left(ldDoc.Name, InStr( 1 , ldDoc.Name, ".") -  1 )

'Fullpath of file
    strPath = ldDoc.Path
    'strAny = ldDoc.Content  'Insert text from file in object
    strAnyWord = "Aieoiaio:"
       
    Set oraSession = CreateObject("OracleInProcServer.XOraSession")
'Connection parameter
    Set oraDatabase = oraSession.OpenDatabase("landocst", "dbo/dbo",  0 )
    'MsgBox "Connected to " & oraDatabase.Connect & "@" & oraDatabase.DatabaseName

'Create the OraDynaset Object.
'if you are not call parameter for Bind variable, your SQl statment will ejected error
    oraDatabase.Parameters.Add "var1", strDocName,  1 
    
    Set OraDynaset = oraDatabase.CreateDynaset(" SELECT ver.""FileName"" as NameDoc, voc.""Name"" as Pol, stat.""Name"" as StatName " _
   & "FROM dbo.ldmail mail, DBO.LDERC erc, DBO.LDMAILSTATE stat, DBO.LDVOCABULARY voc, DBO.ldversion ver " _
   & "WHERE erc.""ID"" = mail.""ERCID"" AND ver.""FileName"" = :var1 AND erc.""ID"" = ver.""DocID"" AND erc.""JournalID"" = 340470 " _
   & " AND mail.""ReceiverID"" = voc.""ID"" AND mail.""MailStateID"" in (2,4,6) AND mail.""MailTypeID"" = 340468 AND mail.""MailStateID"" = stat.""ID"" ",  0 &)

'You can now display or manipulate the data in the dynaset. For example:
    Do While Not OraDynaset.EOF
        Set OraFields = OraDynaset.Fields
        FieldPol = OraFields("Pol").Value
        FieldStat = OraFields("StatName").Value
        lines() = Split(strAnyWord & " " & strDocName & " " & FieldPol & " -> " & FieldStat, "")
        'text1 = text1 & vbCrLf & FieldPol & FieldStat
        text1 = lines(i) & vbCrLf & text1
        OraDynaset.MoveNext
        Loop
        
'Insert data in textbox
    With ldDoc.Shapes.AddTextbox(msoTextOrientationHorizontal,  320 ,  780 ,  280 ,  50 )
        .LockAspectRatio = msoTrue
        .LockAspectRatio = msoTrue
        .Line.Visible = msoFalse    'Hide lines
        .TextFrame.TextRange.Text = text1
        .TextFrame.TextRange.Font.Name = "Times New Romans"  'Font
        .TextFrame.TextRange.Font.Size =  8      'Size font
        .TextFrame.AutoSize = True      'Autosize textbox
        '.TextFrame.VerticalAnchor = msoAnchorBottom
    End With
    
End Sub
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставка всех полученных строк sql-запроса (Oracle) в Textbox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]