Биты и байты.

Биты и байты.

среда, 18 февраля 2015 г.

Частичное обновление страницы. AJAX+ ASP.NET

Описание вызова ниже, пример взят отсюда  и немного модифицирован.



Aspx страница

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="jquery-1.3.2.min.js" type="text/javascript"></script>
    <script type = "text/javascript">
        function ShowCurrentTime() {
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetDocStatus",
                data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
        });
    }
    function OnSuccess(response) {
       // alert(response.d);
        document.getElementById("demo").innerHTML = response.d;
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div style="height: 427px"/>
    Your Name :
    <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
    <input id="btnGetTime" type="button" value="Show Current Time"
        onclick = "ShowCurrentTime()" /><br />
        <asp:Label ID="LabelRefresh" runat="server" Text="Label"></asp:Label>
        <br />
        <br />
        <p id="demo">Результат</p>
    </form>
</body>
</html>

понедельник, 16 февраля 2015 г.

Достучаться до Firebird..

Понадобилось однажды быстро отчет сделать для смежного отдела, вроде все просто, но вся беда в том, что база находится на Firebird.
Это не проблема когда под рукой есть хороший провайдер.


В качестве решения было принято использовать SQL Server 2012 Express Advanced Services вместе со службой сервера отчетов.
Доступ к данным настраивался через связанный сервер.

  1. Для разработки понадобятся сам сервер Firebird , качаем нужную версию.
  2. Устанавливаем сервер вместе с клиентскими компонентами.
  3. Для работы с Firebird  понадобится IBExpert personal  - GUI оболочка для администрирования и выполнения скриптов. Качаем и устанавливаем.
  4. Триальная версия oledb провайдера IBProvider для изучения внутренней структуры базы.
  5. Инструкция по созданию связанного сервера  с использованием IBProvider. Читаем и настраиваем

! Обязательно проверяем соединение скриптом из инструкции выше,  клиентскую библиотеку fbclient.dll копируем в корень каталога windows.

      6.       После того как настроили все по инструкции проверяем соединение.

begin distributed transaction;
select * from FB_TEST...TEST_TABLE;
commit;

      7.      Если все хорошо приступаем к изучению базы по системным таблицам

--список всех таблиц
select rdb$relation_name
from FB_TEST...RDB$RELATIONS t
where rdb$view_blr is null
and (rdb$system_flag is null or rdb$system_flag = 0);

--список всех столбцов
select f.rdb$relation_name, f.rdb$field_name
from  FB_TEST...RDB$RELATION_FIELDS f
join  FB_TEST...RDB$RELATIONS r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
order by 1, f.rdb$field_position;

--проверка индексов
SELECT RDB$INDEX_NAME
FROM FB_TEST...RDB$INDICES
WHERE RDB$RELATION_NAME='TEST_TABLE'
--AND RDB$UNIQUE_FLAG IS NULL
--AND RDB$FOREIGN_KEY IS NULL;          

--детальная информация по индексам
SELECT RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS field_name,
RDB$INDICES.RDB$DESCRIPTION AS description,
(RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION + 1) AS field_position
FROM FB_TEST...RDB$INDEX_SEGMENTS
LEFT JOIN FB_TEST...RDB$INDICES ON RDB$INDICES.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME
LEFT JOIN FB_TEST...RDB$RELATION_CONSTRAINTS ON RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME
WHERE UPPER(RDB$INDICES.RDB$RELATION_NAME)='TEST_TABLE'         -- имя таблицы
AND UPPER(RDB$INDICES.RDB$INDEX_NAME)='APC_TEST_TABLE' -- название индекса
AND RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE IS NULL
ORDER BY RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION

P.S После того как необходимые запросы будут написаны и вы разберетесь со структурой базы, настраиваем связанный сервер  через ODBC качаем  с оф.  сайта провайдер

Настраиваем ODBC, системный DSN

Проверяем соединение.Переписываем запросы на OpenQuery если это необходимо и наслаждаемся!
SELECT *
FROM  openquery(fbnew,'select CH.FLASTNAME, CH.FFIRSTNAME , CH.FMIDDLENAME  ,CH.FID1, CH.FID0 from TEST_TABLE CH ')

вторник, 10 февраля 2015 г.

Шпаргалка JavaScript

Отличие == от ===
Оператор == сравнивает на равенство, а  ===  на идентичность, проверяя также и типы.

Небольшой справочник с примерами на Codeacademy
Книга хабра, выразительный Js
Объектная модель документа DOM
Уроки  DOM

Пример JavaScript, сложение 2х чисел

<html>
  <body>
    <p>Click the button to calculate x.</p>
    <button onclick="myFunction()">Try it</button>
    <br/>
    <br/>Enter first number:
    <input type="text" id="txt1" name="text1">Enter second number:
    <input type="text" id="txt2" name="text2">
    <p id="demo"></p>
    <script>
        function myFunction() {
            var y = document.getElementById("txt1").value;
           var z = document.getElementById("txt2").value;
            var x = +y + +z;
            document.getElementById("demo").innerHTML = x;
        }
    </script>
  </body>
</html>

Протестировать скрипт можно на jsbin.com
JQuery - библиотека для работы с DOM

<html>
<head>
    <title>jQuery Hello World</title>
    <script type="text/javascript" src="//code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#msgid").html("This is Hello World by JQuery");
        });
    </script>
    This is Hello World by HTML
    <div id="msgid">
    </div>
</body>
</html>

P/S
Много различных шпаргалок можно найти здесь

About