2011-11-14
Pytanie od znajomej, którą zapytał jej przełożony:
Czy da się posortować akrusze w skoroszycie Excela alfabetycznie?
Ano da się. Makrem. Rozwiązanie pochodzi z tego miejsca: http://www.teachexcel.com/free-excel-macros/m-49,sort-worksheet-tabs.html
Na wszelki wypadek makro sortujące arkusze umieszczam poniżej: Czytaj dalej »
2011-11-11
Można na stronie, która zawiera przycisk w Page_Load dopisać:
LinkButton1.Attributes.Add(„onclick”, „window.open(’new.aspx’,”,”); return false;”);
window.open to polecenie JavaScript, która otwiera nowe okno, a w nim stronę new.aspx.
return false widoczne na koncu powoduje, że obsłużenie kliknięcia odbywa się na kliencie, bez postback-a.
2011-11-11
Zamierzasz utworzyć procedurę, którą będzie uruchamiał pewien nowy użytkownik. Tworzymy więc konto użytkownika:
USE Test
GO
CREATE USER TestUser WITHOUT LOGIN
GO
Teraz dla użytkownika utworzymy procedurę i nadamy uprawnienia dla tego użytkownika:
CREATE PROCEDURE TestIt
AS
BEGIN
SELECT file_id, name
FROM sys.database_files
END
GRANT EXECUTE ON TestIt TO TestUser
GO
Uwaga! Uruchamiając ten kod zaznacz go w całości (nie kawałek po kawałku). Czytaj dalej »
2011-11-05
Rzeczywiście, jeżeli w tabeli asp umieścisz inne kontrolki asp, to nie ma możliwości wyświetlenia properties dla tych kontrolek. Nie działa również F4. Jednyna możliwość to ręczne wypełnianie właściwości, czego przecież chcemy uniknąć.
Jeżeli Twoim celem jest po prostu rozmieszczenie kontrolek na stronie, to lepiej użyj zwykłej tabelki (tej HTML-owej, a nie ASP). W przypadku tej tabeli wszystko działa jak należy!
2011-11-04
Strona wykorzystuje szablon CSS. W moim przypadku musiałem otworzyć plik Styles/Site.css, a w nim dokonać zmiany szerokości w kilku miejscach:
- body
- page
- header
- main
- footer
Wszędzie musiała się pojawić linijka poszerzająca moją stronę na 1200 pikseli:
width: 1200px;
Mimo tych zmian strona nie od razu reagowała na zmianę szerokości. W IE musiałem wyczyścić cache przeglądarki.
2011-10-29
Ten przykład pokaże, że co innego jest napisać i dobrze wykorzystać procedurę składowaną z parametrami, a co innego ten sam kod wykonać jako zapytanie ad-hoc, nawet jeżeli pewne wartości do zapytania będą przekazywane poprzez zmienne.
Będziemy pracować w testowej bazie danych:
use AdventureWorks2008R2
Zauważ, jak zachowuje się poniższe zapytanie:
SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN '2005-07-21′ AND '2005-07-22′
jeśliby zajrzeć do planu wykonania zobaczysz, że robi table scan. Gdyby nasi użytkownicy mieli częściej wykonywać tego rodzaju analizy, to możemy dla nich utworzyć indeks:
CREATE NONCLUSTERED INDEX IX_SalesOrderHeader_OrderDate
ON Sales.SalesOrderHeader(OrderDate)
Zobaczmy czy nasze zapytanie zauważyło tę zmianę:
SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN '2005-07-21′ AND '2005-07-22′
O tak. Tym razem optymalizator zaproponował, że wykona nonclustered index seek. Super! To zobaczmy, co się stanie, jeżeli sparametryzujemy kwerendę:
–zmieniam date na zmienna:
DECLARE @d1 DATETIME = '2005-07-21′
DECLARE @d2 DATETIME = '2012-07-22′
SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN @d1 AND @d2;
Zapytanie zadziałało, ale wykonany został table scan! Co najmniej, jakby serwer nie zauważył, że w zmiennych nadal znajdują sie te same dane. Na całe szczęście dysponujemy hintami (wskazówkami), którymi można wskazać serwerowi, że zapytanie ma wykonać tak, jakby zmienne miały określone wartości. Wspomniany hint to OPTIMIZE FOR. Zaobserwuj plan wykonania tego zapytania: Czytaj dalej »
2011-10-29
Załóżmy, że mamy tabelę o następującej strukturze:
CREATE TABLE case_status
( Id INT,
CaseId CHAR(10),
Status CHAR(10)
)
Tabela ma zapamiętywać historyczne zmiany, które zachodziły dla określonych spraw (CaseId). Przyjrzyjmy się takim danym:
INSERT INTO case_status VALUES
(1,’CASE_A’,’Open’),
(2,’CASE_B’,’Open’),
(3,’CASE_A’,’Process’),
(4,’CASE_C’,’Open’),
(5,’CASE_A’,’Close’),
(6,’CASE_B’,’Process’)
Widać, że sprawa „CASE_A: została kiedyś otwarta (rekord nr 1), potem była przetwarzana (rekord nr 3), aż wreszcie została zamknięta (rekord nr 5). Jeżeli przeanalizujemy dane, to okaże sie dodatkowo, że CASE_A jest już zamknięta, CASE_B jest w stanie Process, a CASE_C jest póki co tylko otwarta (Open).
Jakie zapytanie może pokazać aktualny stan tych spraw? Czytaj dalej »