Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Сохранение HTML-страницы из Access

При сохранении HTML-страницы браузеры Opera и IE предлагают 3 возможных способа сохранения:
1. HTML-файл
2. HTML-файл с изображениями. (рисунки сохраняются в отдельную папку. У гугла не увидел этой опции)
3. Web-архив - единственный файл (*.mht)

Интересует второй способ: HTML-файл с изображениями. При котором рисунки сохраняются в отдельную папку. Можно ли средствами ВБА сохранить страницу сайта в таком формате
Ответ: вебстраница,

есть плагин к FirFox - ScrapBook. Посмотри на код и пробуй портировать.
Для ФФ все с открытым кодом ЕМНИП...
Вопрос: парсинг html таблицы из html файла с последующим добавлением в БД

И снова здравствуйте!
И опять возник немного нестандартный вопрос:
Есть к примеру обычный html страница( в частности даже файл, который можно открыть по обычной ссылке в папке.) в этом файле я заведомо создал html таблицу и накидал простенький макет:

<html>
<body>
<table id='table1' name='table1'>

<tr><th> Код </th><th> Данные</th></tr>
<tr id=2><td id='код' name='код'> 2 </td><td id='данные' name='данные'> Яблоки</td></tr>
<tr id=5><td id='код' name='код'> 5 </td><td id='данные' name='данные'> Груши</td></tr>
<tr id=4><td id='код' name='код'> 4 </td><td id='данные' name='данные'> Арбузы</td></tr>

</table>
</body>
</html>


Html таблица по имени своей и по имени столбцов заведомо полностью совпадает с именем в Бд. Один в один. Подскажите пожалуйста, как при помощи vba можно снять значения строк этой таблицы и загнать их в рекордсет виртуальный? Как вообще зацепиться за эту таблицу из аксесса?
Ответ: Сергей Лалов,
Вот таким макросом я выгружаю приложения и формирую txt файлы для последующей обработки
Sub SaveAttachments()
Dim m As Object
    Dim objApp As Outlook.Application
    Dim objItem As Object
    Dim objSelection As Outlook.Selection
    Dim objMail As MailItem
    Dim AttFolder As String
     
    Set objApp = CreateObject("Outlook.Application")
    Set objSelection = objApp.ActiveExplorer.Selection
     
    AttFolder = "C:\SedMO\TEMP\InPut"
     
    If AttFolder <> "" Then AttFolder = AttFolder + "\"
    On Error Resume Next
     Kill ("C:\SedMO\TEMP\InPut\*.*")
   
        Set fs = CreateObject("Scripting.FileSystemObject")
        If Not fs.folderexists(AttFolder) Then
            fs.createfolder (AttFolder)
        End If
         
        For Each objItem In objSelection
            If objItem.Class = olMail Then
                Set objMail = objItem
                For i = 1 To objMail.Attachments.Count
                    If objMail.Attachments.Item(i).Position = 0 Then
                         t = t + 1
                       a = t & ".   " & objMail.Attachments.Item(i).FileName & vbCrLf
                        f = f & a
                        
                       objMail.Attachments.Item(i).SaveAsFile AttFolder + objMail.Attachments.Item(i).DisplayName
                    End If
                Next
            End If
        Next
        
        
        Dim b As String
        
       
      
   ' отправитель
   otpr = vbCrLf & vbCrLf & "Отправитель: " & objMail.SenderName & "  (" & objMail.SenderEmailAddress & ")" & vbCrLf
   
   'дата и время отправаки
   
   senttime = "Отправлено: " & objMail.SentOn & vbCrLf
    'получатели

                   resip = objMail.To & vbCrLf
 
   tem = "Тема письма: " & objMail.ConversationTopic & vbCrLf

      ' формирование тела файла txt
      
      ' тело письма
        b = "-------------------Тело письма------------------------" & vbCrLf & objMail.Body & vbCrLf
        
       ' файлы вложения
        f = "-------------------------Файлы вложения ( " & t & " )--------------------" & vbCrLf & f
        
        'xx = vbCrLf & "-------------------------ID--------------------" & vbCrLf & "ID = " & objMail.EntryID
        
        txtt = otpr & senttime & resip & tem & vbCrLf & b & vbCrLf & f
               filname = "C:\SedMO\TEMP\InPut\" & Format(objMail.SentOn, "dd\_mm\_yyyy hh\_mm\_ss") & ".txt"

        
          Set FSO = CreateObject("scripting.filesystemobject")
        Set ts = FSO.CreateTextFile(filname, True, True)
        ts.Write txtt
        ts.Close
       
        
        ' сохранение адреса в txt
        
        txte = objMail.SenderEmailAddress & "///" & objMail.ConversationTopic
        filname = "C:\SedMO\TEMP\InPut\EMLadr.txt"

        
         ' Set FSO = CreateObject("scripting.filesystemobject")
        'Set ts = FSO.CreateTextFile(filname, True, True)
        'ts.Write txte
        'ts.Close
        
       
            
         With CreateObject("ADODB.Stream")
                .Type = 2
                .Charset = "windows-1251"
                .Open
                .WriteText txte
                .SaveToFile filname, 2        ' сохраняем файл в заданной кодировке
                .Close
            End With
         
    'SaveTextToFile = Err = 0: DoEvents
        
objMail.UnRead = False ' помечаем письмо как прочитаное
    End Sub


Может чем поможет

можешь в процедуру просто добавит MsgBox (objMail.Body) это вывидет окно с содержимым письма,где objMail - созданный ранее объект письма
Вопрос: Импорт HTML

Доброе утро.
При импортировании HTML в access не видит время. Помогите.
Файл во вложении.
Ответ: BSH, этот запрос можешь переделать в запрос на обновления или вставку и получить требуемое
SQL
1
2
SELECT selHTML.[PlDat#ChIn], selHTML.PlTmChIn, [PlDat#ChIn]+TimeValue(REPLACE([PlTmChIn]," ",":")) AS [DateTime]
FROM (SELECT * FROM [Report output] IN 'C:\ffff.htm'[HTML Import;])  AS selHTML;
Вопрос: Выборка данных из ORACLE в HTML

Всем доброго дня! Имеется База Данных которую я перенес к себе на компьютер для тестирования. К этой БД подключается клиентское ПО где отражается информация о клиентах, их статусе, ФИО, контакты, баланс карты и т.д
Через sqlplus я считал информацию о наличии таблиц в БД, их около 400.
Цель следущая : сделать выборку клиентов в html, чтобы на страничке отражались данные о клиенте, контакты, дебеты и кредиты по карте, когда были движения и т.д

Вопрос, как определить в какой из таблиц содержатся данные чтобы сделать выборку по моим параметрам? Или же можно сделать выборку из всей таблицы?
Ответ:
Сообщение от werty56
как определить в какой из таблиц содержатся данные чтобы сделать выборку по моим параметрам
Обычно для определения того, откуда неизвестное приложение берет данные, включают трассировку сессии этого приложения и потом изучают трассировочный файл (в него попадает весь SQL сессии).
Если это почему-либо невозможно, тогда придется выдавать SELECT-ы ко всем возможным таблицам и столбцам, что довольно геморройно.

PS
Не понял, прчем тут html
Вопрос: Результат в виде HTML файла

Как можно результат выполнения запросов в приложение sqlplus записать в html файл, например как это выполняет sql developer. Это нужно для удобства чтения информации так как sqlplus не все таблицы отображает корректно
т.е.
name_file
-------------------------
type_file
------------------------
d
d
d
1
2
3

и т.д.

если я делаю пере направление в тхт файл используя bat'ник то и в файле отображается результат так же как в утилите sqlplpus.
желаемый результат в выходной файл html:
name_file type_file
--------- ----------
d 1
d 2
d 3


в догонку, как сделать так сказать заголовок результата выполнения запроса?
т.е.
Файлы базы данных:
name_file type_file
--------- ----------
d 1
d 2
d 3
Ответ: и как дальше можно использовать данный код формирование html?
Вопрос: конвертировать XML в HTML

Что-то у мя туго с фантазией. Вот есть XML.
Хочу сделать из него строку HTML. Ну не replace-ом же колбасить?
declare @xml xml = N'<BeachList>
    <Beach Name="Первый">
      <ContentList>
        <Content Name="Оборудован" Description="до 30 сентября">
          <ContentList>
            <Content Name="бар" />
            <Content Name="душевые" />
            <Content Name="зонты" />
            <Content Name="кабинки для переодевания" />
            <Content Name="кафе" />
            <Content Name="лежаки" />
            <Content Name="пляжные полотенца" Description="в номерах" />
            <Content Name="шезлонги" />
          </ContentList>
        </Content>
        <Content Name="Расстояние до пляжа" Description="10 м">
          <ContentList>
            <Content Name="песчано-галечный" />
            <Content Name="собственный" />
          </ContentList>
        </Content>
      </ContentList>
      <BeachServiceList>
        <BeachService Name="Водо-моторные виды спорта (за дополнительную плату)" />
      </BeachServiceList>
    </Beach>
    <Beach Name="Второй">
      <ContentList>
        <Content Name="Оборудован" Description="до 30 сентября">
          <ContentList>
            <Content Name="бар" />
            <Content Name="душевые" />
            <Content Name="зонты" />
            <Content Name="кабинки для переодевания" />
            <Content Name="кафе" />
            <Content Name="лежаки" />
            <Content Name="пляжные полотенца" Description="в номерах" />
            <Content Name="шезлонги" />
          </ContentList>
        </Content>
        <Content Name="Расстояние до пляжа" Description="10 м">
          <ContentList>
            <Content Name="песчано-галечный" />
            <Content Name="собственный" />
          </ContentList>
        </Content>
      </ContentList>
      <BeachServiceList>
        <BeachService Name="Водо-моторные виды спорта (за дополнительную плату)" />
      </BeachServiceList>
    </Beach>
  </BeachList>'

select [data()] = n.value('@Name', 'nvarchar(512)') 
  from @xml.nodes('/BeachList/Beach') as b(n)
  for xml path('li'), root('ul')

-----------------
<ul>
  <li>Первый</li>
  <li>Второй</li>
</ul>

-----------------
-- Хоцца продолжить в духе и шоб покороче

<ul>
  <li>Первый
     <ul> 
         <li>Оборудован до 30 сентября
             <ul> 
                 <li>бар</li>
                 <li>душевые</li>
                 <li>зонты</li>
                 ...
             </ul>
         </li>
         <li>Расстояние до пляжа 10 м
             <ul> 
                 <li>песчано-галечный</li>
                 <li>собственный</li>
             </ul>
         </li>
     </ul>
  </li>
  <li>Второй
      ...
  </li>
</ul>
Ответ:
Сон Веры Павловны
aleks2
пропущено...


1. Я видал и помохначе.
2. В 101% случаев, когда я сталкивался с использованием regexp - оно там было не нужно. От слова совсем.
3. Бредовость этой конструкции самочевидна.
4. А смысл - неочевиден.

ЗЫ. Ты, наверное, думаешь эта строка вызывает чудесного демона-проверяльщика? Я тя разочарую - там такой же код, какой пишешь ты - код индуса-недоучки.

Ух ты. Всё в одном флаконе - "у меня длинее", убедительная внятная аргументация, эмоциональные эпитеты, и переход на личности. Супер.
Так что там с альтернативой ? Она тоже не нужна от слова "совсем"? Как, например, генерация html средствами БД?


В это трудно поверить... но HTML и XML - одно и тоже.
Дык, в "средства БД" включена штатная генерация XML.

ЗЫ. Но ты могешь генерировать HTML с помощью regexp.
Вопрос: table 2 clob in html

есть таблыца. Нужно select * from Таблыца сохранить в виде html таблицы в силобе.
Есть ли уже готовое решение?
Ответ:
 FUNCTION fncRefCursor2HTML(rf SYS_REFCURSOR, exclude_head_body number default 0,table_attr varchar2 default NULL) RETURN CLOB IS
    lRetVal     CLOB;
    lHTMLOutput XMLType;
  
    lXSL     CLOB;
    lXMLData XMLType;
  
    lContext DBMS_XMLGEN.CTXHANDLE;
  BEGIN
    -- get a handle on the ref cursor --
    lContext := DBMS_XMLGEN.NEWCONTEXT(rf);
    -- setNullHandling to 1 (or 2) to allow null columns to be displayed --
    DBMS_XMLGEN.setNullHandling(lContext, 1);
    -- create XML from ref cursor --
    lXMLData := DBMS_XMLGEN.GETXMLTYPE(lContext, DBMS_XMLGEN.NONE);
    if lXMLData is NULL then
      return NULL;
    end if;
  
    -- this is a generic XSL for Oracle's default XML row and rowset tags --
    -- " " is a non-breaking space --
    lXSL := lXSL || q'[<?xml version="1.0" encoding="utf-8"?>]';
    lXSL := lXSL || q'[<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">]';
    lXSL := lXSL || q'[ <xsl:output method="html"/>]';
    lXSL := lXSL || q'[ <xsl:template match="/">]';
    if exclude_head_body <> 1 then
    lXSL := lXSL || q'[ <html>]';
    lXSL := lXSL || q'[  <body>]';
    end if;
    if table_attr is null then
    lXSL := lXSL || q'[   <table border="1" cellspacing="0px" cellpadding="1px">]';
    else
    lXSL := lXSL || '<table '||table_attr||' >';
    end if;
    lXSL := lXSL || q'[     <tr bgcolor="AAAAAA">]';
    lXSL := lXSL || q'[      <xsl:for-each select="/ROWSET/ROW[1]/*">]';
    lXSL := lXSL || q'[       <th><xsl:value-of select="name()"/></th>]';
    lXSL := lXSL || q'[      </xsl:for-each>]';
    lXSL := lXSL || q'[     </tr>]';
    lXSL := lXSL || q'[     <xsl:for-each select="/ROWSET/*">]';
    lXSL := lXSL || q'[      <tr>]';
    lXSL := lXSL || q'[       <xsl:for-each select="./*">]';
    lXSL := lXSL || q'[        <td><xsl:value-of select="text()"/> </td>]';
    lXSL := lXSL || q'[       </xsl:for-each>]';
    lXSL := lXSL || q'[      </tr>]';
    lXSL := lXSL || q'[     </xsl:for-each>]';
    lXSL := lXSL || q'[   </table>]';
    if exclude_head_body <> 1 then    
    lXSL := lXSL || q'[  </body>]';
    lXSL := lXSL || q'[ </html>]';
    end if;
    lXSL := lXSL || q'[ </xsl:template>]';
    lXSL := lXSL || q'[</xsl:stylesheet>]';
  
    -- XSL transformation to convert XML to HTML --
    lHTMLOutput := lXMLData.transform(XMLType(lXSL));
    -- convert XMLType to Clob --
    lRetVal := lHTMLOutput.getClobVal();
  
    DBMS_XMLGEN.closeContext(lContext);
  
    RETURN lRetVal;
  END fncRefCursor2HTML;



use:
select fncRefCursor2HTML(cursor(select * from table )) from dual
Вопрос: Сохранение excel файла через макрос access

доброго времени суток.
тем очень много, но не одна не помогла.
мне нужно макрос в access, который выполняет сохранение excel в данную папку.
я тут попробовал, в excel работает, а вот в access нет.
Visual Basic
1
2
3
4
5
6
7
8
9
Sub ГЊГ*êðîñ1()
 
    Windows("SHIPMENT.XLSX").Activate
    ChDir "\\bykna001\FREDIRECT$\Lysikov\Desktop\Ëèñò ïîäáîðГ*"
    ActiveWorkbook.SaveAs Filename:= _
        "\\bykna001\FREDIRECT$\Lysikov\Desktop\Ëèñò ïîäáîðГ*\SHIPMENT.XLSX", FileFormat _
        :=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
End Sub
Добавлено через 4 минуты
Забыл написать, что exsel файл открыт. И после сохранения он закрывается.
Ответ: Не уверен, что все так как Вы описываете, ведь откуда-то берется PERSONAL.XLSB? А надо чтобы он не возникал вообще.

Тем не менее, поскольку вы работаете в форме Access, то можно воспользоваться ее таймером. Установите интервал таймера формы на 30000 (это 30 секунд), создайте процедуру таймера и в ней запишите строки сохранения файла и его закрытия. Конечно убрав их из основной процедуры

Добавлено через 19 минут
Да, забыл. Объектная переменная xlWb для работы в процедуре таймера должна быть объявлена публичной или уровня формы. Тогда она будет доступна

Добавлено через 3 минуты
И еще. В начале работы TimerInterval должен быть равен нулю. Когда появится необходимость сохранения ексель-файла, вот только тогда пишете в коде Me.TimerInterval=30000
Вопрос: Сохранение в бд данных загруженных из Excel в datagriview

Доброго времени суток. Прошу прощения, если я не в тот раздел написал.Такая проблема: реализована загрузка данных из файла xml в datagridview, но загрузить из dgv в базу данных не получается.Может кто помочь?
Код загрузки и сохранения из xml:
C#
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
OpenFileDialog ofdXLSImp = new OpenFileDialog();
            ofdXLSImp.Filter = "Файл Excel|*.XLSX;*.XLS";
            ofdXLSImp.Title = "Выберите файл для импорта";
            if (ofdXLSImp.ShowDialog() == DialogResult.OK)
            {
                InOutProps.xlFileName = ofdXLSImp.FileName;
            }
            ExcelObj.Application ExcApp = new ExcelObj.Application();
            ExcelObj.Workbook ExcWorkbook;
            ExcelObj.Worksheet NwSheet;
            ExcelObj.Range ShtRange;
            ExcWorkbook = ExcApp.Workbooks.Open(InOutProps.xlFileName);
            NwSheet = (ExcelObj.Worksheet)ExcWorkbook.Sheets.get_Item(1);
            ShtRange = NwSheet.UsedRange;
            dgvShowDb.DataSource = tblBindingSource;
            string strShowDB = "select * from [" + InOutProps.DBName + "].[" + lblUsrTbl.Text + "]";        
            string GetDataConn = Utility.GetConnectionString();
            dataAdapter = new SqlDataAdapter(strShowDB, GetDataConn);
            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
            DataTable table = new DataTable();
            dataAdapter.Fill(table);
            for (int Rnum = 1; Rnum <= ShtRange.Rows.Count; Rnum++)
            {
                DataRow dRow = table.NewRow();
                for(int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
                {
                    if ((ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2 != null)
                    {
                        dRow[Cnum] = (ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2.ToString();
                    }
                }
                table.Rows.Add(dRow);
                table.AcceptChanges();
            }
            ExcApp.Quit();
            tblBindingSource.DataSource = table;
            dataAdapter.InsertCommand = new SqlCommand("Insert into [" + InOutProps.DBName + "].[" + lblUsrTbl.Text + "] (QrCode, Name, NumInStash, GoodDesc ) values (@QrCode , @Name, @NumInStash, @GoodDesc)");
            dataAdapter.InsertCommand.Parameters.Add("@QrCode", SqlDbType.Int, 10, "QrCode");
            dataAdapter.InsertCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 30, "Name");
            dataAdapter.InsertCommand.Parameters.Add("@NumInStash", SqlDbType.Int, 10, "NumInStash");
            dataAdapter.InsertCommand.Parameters.Add("@GoodDesc", SqlDbType.NVarChar, 200, "GoodDesc");
            dgvShowDb.AutoResizeColumns();
            dataAdapter.Update((DataTable)tblBindingSource.DataSource);
При том что если я данные в dgv ввожу ручками, то все спокойно сохраняется. Код простого сохранения:
C#
1
2
string strReload = "Select * from [" + InOutProps.DBName + "].[" + lblUsrTbl.Text+"]";
            dataAdapter.Update((DataTable)tblBindingSource.DataSource);
Ответ: SevarJer, вот все что есть связанное с dgv. Загрузка из бд:
C#
1
2
3
4
5
6
7
8
9
10
private SqlDataAdapter dataAdapter = new SqlDataAdapter();
        private BindingSource tblBindingSource = new BindingSource();
string GetDataConn = Utility.GetConnectionString();
string selectCommand = "Select * from [" + InOutProps.DBName + "].[" + lblUsrTbl.Text+"]";
                dataAdapter = new SqlDataAdapter(selectCommand, GetDataConn);
                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
                DataTable table = new DataTable();
                dataAdapter.Fill(table);
                tblBindingSource.DataSource = table;
                dgvShowDb.AutoResizeColumns();
А сохранение идет так:
C#
1
dataAdapter.Update((DataTable)tblBindingSource.DataSource);
При том, что я у адаптера не задавал никаких функций insert, update, delete и и сохраняется вроде нормально. Саму функцию insert добавил после добавления функции импорта из экселя в надежде что поможет. Может может с ней не так что сделал
Вопрос: Пополнение БД Access через HTML и JS

Всем привет! Нужна помощь в решении следующей задачи:

Имеется:
1) На странице html я обрабатываю файлы с помощью JavaScript и получаю некоторые выходные значения.
2) Также есть готовая База данных в MS Access с определенной схемой.

Нужно:
К примеру, чтобы по нажатии кнопки на html-странице, эти значения записывались в определенные поля определенных таблиц данной БД, чтобы происходило автоматическое пополнение

Примечание:
1) Все происходит локально на компе, НЕ на сервере.
2) Стандартный импорт файла в Access НЕ подходит!

Не понимаю:
Как установить связь с базой через JS? Это вообще возможно? В инете не нашла должного ответа (может плохо ищу...)
Ответ:
Сообщение от Anire_take
да, насчет ADO думала, но ведь это все-таки VBA
Очень понравилась фраза, знакомый дельфиец будет в восторге!