Archyvas

Įrašo tag'ai: ‘Programavimas’

SQL. Paskutinės praėjusio mėnesio dienos datos gavimas

Seniau kliedėjau apie paskutinės praeitos mėnesio dienos datos gavimą. Analogiškas daiktas ant MS SQL:

SELECT DATEADD(day, -datepart(dd, @DateOfThisMonth), @DateOfThisMonth)

Pvz.:

DECLARE @DateOfThisMonth nvarchar(50)
SET @DateOfThisMonth = ’2005.01.20′
SELECT DATEADD(day, -datepart(dd, @DateOfThisMonth), @DateOfThisMonth)

Išveda: 2004-12-31 00:00:00.000

C#. Praėjusio mėnesio paskutinė diena

Jeigu mums reikia gauti prieš tai buvusio mėnesio paskutinę dieną galima naudotis tokiu kodu:

private DateTime GetLastDayOfPreviousMonth(DateTime Date)
{
DateTime To = Date;
// Prieš tai buvęs mėnuo
To = To.AddMonths(-1);

// Nustatome konkretaus mėnesio paskutinę dieną
To = To.AddDays(DateTime.DaysInMonth(To.Year, To.Month) – To.Day);

return To;
}

Programų derinimas (debug) su C#

Liepa 3rd, 2008 Ernestas Kardzys 2 komentarai

Kuičiausi po Microsoft tinklalapius ir radau gerą straipsnį, kuris pavadintas “How to trace and debug in Visual C#”.

Kas programuojate ant C# – paskaitykit.

http://support.microsoft.com/kb/815788

SQL funkcijų vykdymas

Birželis 19th, 2008 Ernestas Kardzys Nėra komentarų

Su tokia nedidele problemėle susidūriau, bet išsprendžiau. Kad žmonės per daug nesikankintų, sugrūsiu ir čia sprendimą. Kad būtų aišku, viskas vykdoma ant Microsof SQL Server Management Studio (geras daiktas, jei naudojate SQL serverį, tuojau pat pumpuokitės iš Microsoft tinklalapių).

Turime baisiai gerą ir naudingą SQL funkciją:

ALTER FUNCTION [dbo].[GetUserID]
(
– Add the parameters for the function here
@Name nvarchar(250)
)
RETURNS nvarchar(250)
AS
BEGIN
– Declare the return variable here
DECLARE @Result nvarchar(250)

– Add the T-SQL statements to compute the return value here
SELECT @Result=UserID FROM Users WHERE UserName=@Name

– Return the result of the function
RETURN @Result

END

Kaip matome, šis gėris gražina nvarchar(250). Mums reikia kaip nors įvykdyti šį programavimo minties stebuklą. Tad keverzojame:

SELECT dbo.GetUserID(‘Petras’)

Kaip atsakymą gausime:

(No column name)

17

Aišku, skaičius bus kitas :D Bet gali nepatikti tai, kad nėra stulpelio pavadinimo. Tad “paturbiname” užklausą:

SELECT dbo.GetUserID(‘Petras’) AS UserID

Gauname:

UserID

17

Programinės įrangos kokybė

Gegužė 16th, 2008 Ernestas Kardzys 2 komentarai

Baigiamiesiems egzaminams programuotojas nuveze i oro uosta, susodino i lektuva ir pareiske, kad lektuvo valdymui panaudota ju kurta programa. Visi puole lauk. Liko tik vienas programuotojas.
-Jus visiskai pasitikite savo kurta programa?-paklause egzaminuotojas.
-Zinoma, kad pasitikiu. Su mano programa lektuvas net iki pakilimo takelio nenuvaziuos.

Programavimo apibūdinimas

Gegužė 9th, 2008 Ernestas Kardzys 2 komentarai

Turbūt daugumai programuotojų žinomas pokštas, apibūdinantis programavimą. Bet smagus :)

Teorija – kai viską žinai, bet niekas neveikia.

Praktika - kai viskas veikia, bet nežinai kodėl.

Programavimas sujungia abu šiuos dalykus: niekas neveikia neaišku kodėl…

GTK žinutės (Message Box) išmetimas

Gegužė 5th, 2008 Ernestas Kardzys Nėra komentarų

WinAPI turi tokią funkciją kaip MessageBox(). GTK bibliotekoje ieškojau analogo ir suradau:

#include <gtk/gtk.h>

// Kodas…

GtkWidget *dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,  GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, “Nenurodytas rezultatų failas!”);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);

SQL Server 2005 ‘sa’ vartotojas yra išjungtas

Balandis 20th, 2008 Ernestas Kardzys Nėra komentarų

Tad susidūriau su tokia problema, kad ‘sa’ vartotojas yra išjungtas. O man reikėjo pasijungti prie sistemos. Tad, ką daryti, jeigu norima prisijungti kaip ‘sa’ vartotojas?

  1. Registre (regedit) nukeliauti iki HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer. Čia gyvena raktas su pavadinimu LoginMode. Jo DWORD reikšmė pradžioje buvo 1 pas mane – leisti Windows autentifikaciją, o aš norėjau, kad galėčiau prisijungti kaip ‘sa’ vartotojas, tad nustačiau raktą į 2 (Mixed mode authentication).
  2. Per SQL Server Management Studio pasijungiau kaip kompiuterio vartotojas (Windows autentication) ir New Query nustačiau ‘sa’ vartotojui slaptažodį: sp_password @old=null, @new=’sa’, @loginame=’sa’ go (įvykdo F5). Pradiniuose nustatymuose slaptažodis būna tuščias.
  3. Įvykdau kitą užklausą -įjungiu ‘sa’ account’ą: ALTER LOGIN sa ENABLE GO (norint išjungti – DISABLE).
  4. Dabar viskas turi veikti ir iš C# galima drąsiai jungtis su tokiu prisijungimo string’u: string sqlConnectionString = “Server=Ernesto\\SQLExpress;Database=bandymas;Uid=sa;Pwd=sa;”;

SQL Server 2005 Books Online

Balandis 19th, 2008 Ernestas Kardzys Nėra komentarų

Nuėjau į Microsoft tinklalapius ir parsipumpavau šį daikčiuką. Tiksliau, jo rugsėjo versiją :)

Pastebėjimas: Microsoft’as tikrai moka gaminti gerą dokumentaciją. Daug naudingos ir suprantamos informacijos. Tik vienas pastebėjimas: nuėjus į MSDN tinklapius ir iš ten paleidus paiešką (beje, paieška irgi nieko – gana tiksli) bus lėčiau, negu neėjus į Google ir iš ten ieškant medžiagos MSDN’e. Įdomi ypatybė.

Bet grįžkime prie SQL serverio dokumentacijos. Daiktas tikrai geras, jei dirbate su Microsoft SQL serveriu. Dokumentacija primena man Linux’o man puslapius, tik kad ją reikia parsisiųsti – pas mane internetas silpnas ir ne nuolatinis. Tiesa, kartais galima nuėjus į KTU internetą parsisiųsti reikiamos medžiagos studijoms. Nors tuo stengiuosi nepiktnaudžiauti.

Tad apibendrinant šią žinutę: jei turite Microsoft SQL serverį, parsipumpuokite dokumentaciją. Taškas :)

http://msdn2.microsoft.com/lt-lt/sqlserver/bb895970(en-us).aspx

P.S. Manęs draugas paklausė, kuo skiriasi MS SQL Server Express ir kitos versijos (Enterprise, Standard ir pan.). Nežinojau tuo metu tiksliai, tad paieškojau internete.

http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx

C# swich() sakinys

Balandis 4th, 2008 Ernestas Kardzys 2 komentarai

Nieko per daug įspūdingo, bet C# kalbos switch’as gali ne tik skaičius lyginti (kaip C++), bet ir stringus:

string text = “aaa”;
switch (text)
{
case “aa”:
Console.WriteLine(“aa”);
break;
case “bb”:
Console.WriteLine(“bb”);
break;
case “aaa”:
Console.WriteLine(“aaa”);
break;
default:
Console.WriteLine(“default”);
break;
}

Veikia :)