Вставка всех полученных строк 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>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д