• 4 odgovora
  • 2.216 pregleda
Problem sa dataSet-om 27.07.2008. u 16:49 · pre 222 meseci #1
Code:

DataSet dsSearch = m_objSearchSms.SearchSmsMessage(Program.IDKorisnika, dtpKeyDate.Value);

            foreach (DataRowView rowVW in dsSearch.Tables[0].DefaultView)
            {
                string smsText = rowVW.Row[0].ToString();
                string date = rowVW.Row[1].ToString();
                string line = "-----------------------------------------------------------------------------------------------";
                long deleteId = (long)rowVW.Row[3];
                smsNumber += 1;
                string sms = string.Format("\nSMS No: {0}, on date: {1}, ECode: ({4})\n{2}\n{3}\n{2}",
                    smsNumber, date, line, smsText, deleteId);
                this.txtOldSms.Text += sms;
            }
            smsNumber = 0;


Imam stored proceduru koja preko ovog ID-a i datuma pronadje sve poruke i u MS SQL to lepo radi, ali iz VS sve lepo radi do foreach petlje, gde u stvari ne uradi nista nego preskoci celu petlju, ne znam zasto to radi, kada samo treba da ispise podatke iz preuzete tabele?!
Re: Problem sa dataSet-om 01.08.2008. u 11:29 · pre 221 meseci #2
Nije sa dataSet-om nego sa upitom :)
Code:

ALTER PROC [dbo].[SearchSMS]
@id bigint,
@date datetime

AS
SELECT SMSTEXT, DATUM, SMSNUMBER, SMSID
FROM dbo.SMSMessages
WHERE USERID = @id AND DATUM = @date


unos >> 2, 8/1/2008
...ali ne daje mi nikakav izlaz!

Ako obrisem datum vraca sve normalno ali kada dodam datum nece??? (MS SQL 05)
Re: Problem sa dataSet-om 01.08.2008. u 12:07 · pre 221 meseci #3
Obrati paznju na rezoluciju datuma u polju datetime jer datum je upisan zajedno sa vremenom
tako da kad poredis 2 datuma SQL uzima u obzir i vreme pri cemu se datum 7/8/2008 interpreira kao 7/8/2008 00:00:00

Code:

SELECT SMSTEXT, DATUM, SMSNUMBER, SMSID
FROM dbo.SMSMessages
WHERE USERID = @id AND 
(MONTH(DATUM) = MONTH(@date) AND YEAR(@date) = YEAR(DATUM)  AND DAY(DATUM) = DAY(@day) )

ako hoces da dobijes sve recorde iz baze za taj dan
Potpis
Viva lollapalooza
Re: Problem sa dataSet-om 03.08.2008. u 09:26 · pre 221 meseci #5
Postoji jedan "trik" kojim ovo moze da se optimizuje da radi mnogo brze (posto ovde radis tri komplikovane numericke operacije nad svakim redom u tabeli).

Fora je u tome sto je interno datetime predstavljen kao float kome je decimalni deo vreme, dakle cast pa floor zaokruzuje datum na 00:00:00 i moze direktno da se poredi i to radi veoma brzo jer se za svaki red radi samo jedna FP operacija (floor)


Code:

ALTER PROC [dbo].[SearchSMS]
(@id bigint,
@date datetime)
AS
begin
   declare @mojdatum float;
   set @mojdatum = floor(cast(@date as float));

   SELECT SMSTEXT, DATUM, SMSNUMBER, SMSID
   FROM dbo.SMSMessages
   WHERE USERID = @id AND floor(cast(DATUM as float)) = @mojdatum;
end
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme