Вставка всех полученных строк sql-запроса (Oracle) в Textbox - VB

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

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

Подключаюсь к базе Oracle из Word VBA по средствам OO4O. Из базы выбираю данные обычным sql-запросом, используя oradynaset. Хочу организовать вставку данных в TextBox, т.е. addTextBox.TextFrame.TextRange = select * from table. Но после отработки макроса, вставляется лишь первая полученная строка. При помощи Do While Not Oradynaset.EOF ... Loop смог добиться вставки всех строк селекта в документ, но при этом на каждую строку создавался новый TextBox.
Макрос выложу завтра.
Если у кого есть примеры или подобные вещи, буду рад увидеть!

Решение задачи: «Вставка всех полученных строк sql-запроса (Oracle) в Textbox»

textual
Листинг программы
<font color="blue">Sub</font> SilverBullet()

<font color="#00AA00">'Connection to Oracle with OO4O (Oracle object for OLE)</font>
<font color="#00AA00">'Tools -> References.. -> Select <oracle inproc="" server="" 5.0="" type="" library=""></oracle></font>
<font color="blue">Dim</font> oraSession  <font color="blue">As</font> <font color="blue">Object</font>
<font color="blue">Dim</font> oraDatabase <font color="blue">As</font> <font color="blue">Object</font>
<font color="blue">Dim</font> OraDynaset <font color="blue">As</font> OraDynaset
<font color="blue">Dim</font> OraFields <font color="blue">As</font> OraFields
<font color="blue">Dim</font> FieldDoc, FieldPol, FieldStat <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> DocName <font color="blue">As</font> <font color="blue">String</font>

<font color="blue">Dim</font> strDocName <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> strPath <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> ldDoc <font color="blue">As</font> Document
<font color="blue">Dim</font> strAnyWord <font color="blue">As</font> <font color="blue">String</font>

<font color="#00AA00">'for testing</font>
<font color="blue">Dim</font> lines() <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> text1 <font color="blue">As</font> <font color="blue">String</font>

    <font color="blue">Set</font> ldDoc = ActiveDocument
<font color="#00AA00">'File name without extention .doc or .docx</font>
    strDocName = Left(ldDoc.<font color="blue">Name</font>, InStr(<font color="darkblue"><b>1</b></font>, ldDoc.<font color="blue">Name</font>, <font color="teal">"."</font>) - <font color="darkblue"><b>1</b></font>)

<font color="#00AA00">'Fullpath of file</font>
    strPath = ldDoc.Path
    <font color="#00AA00">'strAny = ldDoc.Content  'Insert text from file in object</font>
    strAnyWord = <font color="teal">"Aieoiaio:"</font>
       
    <font color="blue">Set</font> oraSession = CreateObject(<font color="teal">"OracleInProcServer.XOraSession"</font>)
<font color="#00AA00">'Connection parameter</font>
    <font color="blue">Set</font> oraDatabase = oraSession.OpenDatabase(<font color="teal">"landocst"</font>, <font color="teal">"dbo/dbo"</font>, <font color="darkblue"><b>0</b></font>)
    <font color="#00AA00">'MsgBox <font color="teal">"Connected to "</font> & oraDatabase.Connect & <font color="teal">"@"</font> & oraDatabase.DatabaseName</font>

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

<font color="#00AA00">'You can now display or manipulate the data in the dynaset. For example:</font>
    <font color="blue">Do</font> <font color="blue">While</font> <font color="blue">Not</font> OraDynaset.EOF
        <font color="blue">Set</font> OraFields = OraDynaset.Fields
        FieldPol = OraFields(<font color="teal">"Pol"</font>).Value
        FieldStat = OraFields(<font color="teal">"StatName"</font>).Value
        lines() = Split(strAnyWord & <font color="teal">" "</font> & strDocName & <font color="teal">" "</font> & FieldPol & <font color="teal">" -> "</font> & FieldStat, <font color="teal">""</font>)
        <font color="#00AA00">'text1 = text1 & vbCrLf & FieldPol & FieldStat</font>
        text1 = lines(i) & vbCrLf & text1
        OraDynaset.MoveNext
        <font color="blue">Loop</font>
        
<font color="#00AA00">'Insert data in textbox</font>
    <font color="blue">With</font> ldDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, <font color="darkblue"><b>320</b></font>, <font color="darkblue"><b>780</b></font>, <font color="darkblue"><b>280</b></font>, <font color="darkblue"><b>50</b></font>)
        .LockAspectRatio = msoTrue
        .LockAspectRatio = msoTrue
        .<font color="blue">Line</font>.Visible = msoFalse    <font color="#00AA00">'Hide lines</font>
        .TextFrame.TextRange.Text = text1
        .TextFrame.TextRange.Font.<font color="blue">Name</font> = <font color="teal">"Times New Romans"</font>  <font color="#00AA00">'Font</font>
        .TextFrame.TextRange.Font.Size = <font color="darkblue"><b>8</b></font>     <font color="#00AA00">'Size font</font>
        .TextFrame.AutoSize = True      <font color="#00AA00">'Autosize textbox</font>
        <font color="#00AA00">'.TextFrame.VerticalAnchor = msoAnchorBottom</font>
    <font color="blue">End</font> <font color="blue">With</font>
    
<font color="blue">End</font> <font color="blue">Sub</font>

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


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

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

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