Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc s bazom podataka i datumom...

[es] :: .NET :: Pomoc s bazom podataka i datumom...

[ Pregleda: 2203 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Pomoc s bazom podataka i datumom...13.09.2009. u 09:46 - pre 178 meseci
Pozdrav!

evo ovako da objasnim moj problem i što bi htjeo napraviti..

Imam u bazi podataka tablicu računi di mi sprema datum u dateTime obliku broj blagajne i broj računa.
Napravio sam sada jednu formu di sam dodao dateTimePicker i preko njega odaberem datum za koji želim napraviti zaključak dana..

e sad imam jedan list box te kako da iz baze izvadim ukupnu cijenu koliko se prodalo za taj dan za svaku posebnu blagajnu i da se doda u list box npr

Zaključak napravljen dana: 13.09.2009

blagajna 1: 254,50
blagajna 2: 5551,00
blagajna 3: 489,00
blagajna 4: 00,00

broj blagajni vadik iz baze i recimo da je sada broj blagajni = 4 pa bi molio ako mi možete neki primjer napraviti ja sam pokušao ovako nešto al neradi i ne znam kako za svaku blagajnu posebno da ispišem

Code:

        Dim dan, mjesec, godina As String
        dan = dtpDatum.Value.Day
        mjesec = dtpDatum.Value.Month
        godina = dtpDatum.Value.Year

        Dim conn As New OleDb.OleDbConnection
        Dim myCommand As New OleDb.OleDbCommand
        Dim myAdapter As New OleDb.OleDbDataAdapter
        Dim myData As New DataTable
        Dim SQL As String


        SQL = "SELECT * FROM racuni WHERE (MONTH(DATUM) = " & mjesec & " AND " & godina & " = YEAR(DATUM)  AND DAY(DATUM) = " & dan & """"

        conn.ConnectionString = "********************************************************************************"


              Try
            conn.Open()
            Try
                myCommand.Connection = conn
                myCommand.CommandText = SQL

                myAdapter.SelectCommand = myCommand
                myAdapter.Fill(myData)

                Dim ukupna_cijena As String = ""

                For Each red As DataRow In myData.Rows

                    ukupna_cijena = ukupna_cijena + red("cijena_ukupna")


                Next

                lbBlagajne.Items.Add("Ukupna Cijena: " & ukupna_cijena)


            Catch myerror As OleDbException
                MsgBox("There was an error reading from the database: " & myerror.Message)
            End Try




        Catch myerror As OleDbException
            MessageBox.Show("Error connecting to the database: " & myerror.Message)
        Finally
            If conn.State <> ConnectionState.Closed Then conn.Close()
        End Try


te još jedno pitanje kako da napravim da nemoram u svakoj formi pisati ponovo podatke za spajanje na bazu jel postoji nešto jednostavnije da napišem jedanput samo i da onda samo pozovem nekako?

hvala puno
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+837 Profil

icon Re: Pomoc s bazom podataka i datumom...13.09.2009. u 10:43 - pre 178 meseci
Joj, malo citajte na internet-u ima sve...

Prvo za sql upit , treba ti select sum(ukupnacena) as total,idblagajne ..... i u istom na krajy group by(idblagakne).. izmedju where sa datumima..

Sto se tice ovog drugog, za pocetak, napravi univerzalne metode: za select query koji ce da ti vrati npr. DataTable, kao i metode za sql (insert,update,delete), koji ti ne vraca select rezultate, vec samo string,int ili bool pa sta volis ako imas gresku iz catch-a.

Imas puno tema na ovom forumu, pa polako od lakseg ka tezem...
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: Pomoc s bazom podataka i datumom...13.09.2009. u 12:49 - pre 178 meseci
što se tiče prvog djela napravio sam ovako

Code:
  SQL = "SELECT sum(cijena_ukupna) AS cijena_ukupna, blagajna FROM racuni WHERE DAY(Datum) = " & dan & " AND MONTH(Datum) = " & mjesec & " AND YEAR(Datum) = " & godina & " GROUP BY(blagajna)"


i to sada radi oke al ne znam kako da sada ispišem za svaku blagajnu posebno u listbox-u onak kak sam pretkodno napisao
blagajna 1: cijena1
blagajna 2: cijena2

tražio sam malo primjere al nisam uspio nači

drugi dio nije mi toliko sada hitan bitno mi je da taj prvi dio riješim

hvala puno na pomoći!
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: Pomoc s bazom podataka i datumom...13.09.2009. u 16:53 - pre 178 meseci
skonto sam hvala na pomoći ;)
 
Odgovor na temu

markopadjen
Marko Pađen
Paraćin

Član broj: 182243
Poruke: 22
79.101.154.*



+1 Profil

icon Re: Pomoc s bazom podataka i datumom...16.09.2009. u 11:10 - pre 177 meseci
Samo da dodam, kao bolju praksu:

Umesto:

Code:
SQL = "SELECT sum(cijena_ukupna) AS cijena_ukupna, blagajna FROM racuni WHERE DAY(Datum) = " & dan & " AND MONTH(Datum) = " & mjesec & " AND YEAR(Datum) = " & godina & " GROUP BY(blagajna)"


Može se koristiti:

Code:

SQL = "SELECT sum(cijena_ukupna) AS cijena_ukupna, blagajna FROM racuni WHERE Datum = " & lokalniOADate(datum)


ili (ukoliko želimo samo datumsku komponentu)

Code:

SQL = "SELECT sum(cijena_ukupna) AS cijena_ukupna, blagajna FROM racuni WHERE Datum = " & lokalniOADate(datum, True)


gde je:

Code:


    Public Function lokalniOADate(ByVal datum As Date, Optional ByVal samoDatum As Boolean = False) As Double
        If samoDatum Then
            Return datum.Date.ToOADate.ToString.Replace(Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator, My.Computer.Info.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator)
        Else
            Return datum.ToOADate.ToString.Replace(Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator, My.Computer.Info.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator)
        End If
    End Function


Ovo je mnogo bolje kod upoređivanja datuma, tj <, >, <=, >= ...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pomoc s bazom podataka i datumom...16.09.2009. u 15:00 - pre 177 meseci
AKo se ne varam ovo ce t sumirati samo racune koji su odradjeni u ponoc (00:00:00).

A druga stvar, umesto sto nagadjate koji je date format u potrebi u lokalu a koji na SQL-u koristite parmetrizaciju i pustite ADO.NET da brine o tome.
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ć
 
Odgovor na temu

markopadjen
Marko Pađen
Paraćin

Član broj: 182243
Poruke: 22
79.101.154.*



+1 Profil

icon Re: Pomoc s bazom podataka i datumom...16.09.2009. u 15:31 - pre 177 meseci
U pravu si za ponoć ako se čuva u formatu sa vremenom u bazi. Ja sam ovako koristio tamo gde mi je podatak formatu bez vremena, pa sam smetnuo sa uma.

Inače, rekoh da je ovo bolje kod upoređivanja, meni lakše jer se koristi polje datuma kao double. Pa ko kako voli...
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: Pomoc s bazom podataka i datumom...24.09.2009. u 08:26 - pre 177 meseci
dali je možda bolje onda da napravim jedan stupac sa datumom a drugi s vremenom? i u kojem formatu onda treba držati te stupce? mislim da bi tako bilo lakše jer onda nebi trebao posebo tražit godinu posebno mjesec i dan stvarno nisam nikada radio s datumima pa me to uvijek zeza
 
Odgovor na temu

markopadjen
Marko Pađen
Paraćin

Član broj: 182243
Poruke: 22
79.101.153.*



+1 Profil

icon Re: Pomoc s bazom podataka i datumom...24.09.2009. u 09:21 - pre 177 meseci
Nemoj dve kolone za jedno vreme. Ako ti treba vreme, stavi sa vremenom. Tada koristi:

Code:

SQL = "SELECT sum(cijena_ukupna) AS cijena_ukupna, blagajna FROM racuni WHERE FLOOR(Datum) = " & lokalniOADate(datum, True)


Da bi dobio sve tog dana.

Jedna ispravka samo za onu funkciju koju sam napisao. Treba da glasi:

Code:

    Public Function lokalniOADate(ByVal datum As Date, Optional ByVal samoDatum As Boolean = False) As String
        If samoDatum Then
            Return datum.Date.ToOADate.ToString.Replace(Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator, My.Computer.Info.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator)
        Else
            Return datum.ToOADate.ToString.Replace(Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator, My.Computer.Info.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator)
        End If
    End Function


Ako ti vrati Double ne dobijaš ništa. Inače ona ti samo pretvara . u , po potrebi ili obrnuto u slučaju da ti se regionalna podešavanja programa i računara razlikuju.
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: Pomoc s bazom podataka i datumom...24.09.2009. u 11:07 - pre 177 meseci
sad mi je bacio grešku:

Undefined function 'FLOOR' in expesson

sql:

Code:
SQL = "SELECT * FROM zakljucak WHERE  FLOOR(Datum) = " & lokalniOADate(datum, True) & " AND kasa=" & kasa
 
Odgovor na temu

markopadjen
Marko Pađen
Paraćin

Član broj: 182243
Poruke: 22
79.101.153.*



+1 Profil

icon Re: Pomoc s bazom podataka i datumom...24.09.2009. u 11:35 - pre 177 meseci
Onda OLEDB ne podržava tu SQL funkciju.

Probaj
Code:
SQL = "SELECT * FROM zakljucak WHERE  Datum >= " & lokalniOADate(datum, True) & " AND  Datum < " & lokalniOADate(datum.AddDays(1), True) & " AND kasa=" & kasa


To bi trebalo da radi, ali je manje/više budženje.
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: Pomoc s bazom podataka i datumom...24.09.2009. u 12:13 - pre 177 meseci
e to sada radi stavio sam da mi je datum polje u bazi double jer nije htjeo spremit datum kad je bilo date/time i to sve super radi sada al me zanima sada kako da pretvorim iz double u datum nazad kad želim prikazati datum iz baze
 
Odgovor na temu

markopadjen
Marko Pađen
Paraćin

Član broj: 182243
Poruke: 22
79.101.153.*



+1 Profil

icon Re: Pomoc s bazom podataka i datumom...24.09.2009. u 12:25 - pre 177 meseci
Možeš da napraviš funkciju inverznu onoj da ti vraća datum:

Code:

    Public Function lokalniDatum(ByVal datum As Double, Optional ByVal samoDatum As Boolean = False) As Date
        If samoDatum Then
            Return Date.FromOADate(datum).Date
        Else
            Return Date.FromOADate(datum)
        End If
    End Function


I samo joj prosledi double vrednost.
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: Pomoc s bazom podataka i datumom...25.09.2009. u 08:55 - pre 177 meseci
hehe opet ja sry što gnjavi al mene uvijek nešto oko datuma zeza =(((

If samoDatum Then
Return Date.FromOADate(datum).Date
Else

i tu mi javlja grešku Not a legal OleAut date.

u date stringu mi se pojavljuje : 400814032841204.0

dok mi je u bazi stavio kada sam spremo datum: 4,00814032841204E+14

 
Odgovor na temu

markopadjen
Marko Pađen
Paraćin

Član broj: 182243
Poruke: 22
93.86.183.*



+1 Profil

icon Re: Pomoc s bazom podataka i datumom...25.09.2009. u 09:25 - pre 177 meseci
Moraćeš onda ipak da funkciju napraviš ovako:

Code:

    Public Function lokalniDatum(ByVal datum As String, Optional ByVal samoDatum As Boolean = False) As Date
        If samoDatum Then
            Return Date.FromOADate(datum.Replace(My.Computer.Info.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator, Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator)).Date
        Else
            Return Date.FromOADate(datum.Replace(My.Computer.Info.InstalledUICulture.NumberFormat.CurrencyDecimalSeparator, Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator))
        End If
    End Function



Pazi, jesmo ga mi ovde mnogo iskomplikovali za jedan običan datum, ali veruj mi da je tako bolje.
Ja se nisam bakćao toliko sa time, radilo mi je i bez svih ovih zafrkancija oko globalizacije. Ali ipak...

Ti ne znaš kako će neko da podesi Regional Settings na računaru. Ima ljudi koji su navikli na engleski, a ti hoćeš da ti bude "normalan" format. I toga i brojeva. Ili npr ako radeš server / klijent aplikaciju neredak je slučaj da su različita podešavanja za klijent i server aplikaciju. Tako da je po meni uvek rešenje da napraviš univerzalno, pa makar ga i zakomplikovao. ;-)

P.S. Ovo sad što sam ti napisao nisam probao, ako ne radi probaj da mu proslediš STRING u funkciju preko adaptera. Nemoj da pustiš CDBL ili tako nešto, opet će ga zafrknuti.
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: Pomoc s bazom podataka i datumom...29.09.2009. u 07:54 - pre 177 meseci
znam bolje je da bude komplicirano i da radi kako sapda nego da neradi nego opet ista greška mislim da je problem kada on sprema taj datum u bazu il nešto
jer kada pokrenem program i javi mi grešu legal odem na datum string i tamo je broj "400853693141898" i probao sam se malo igrati i obrisao sam mu dosta brojeva i ostavio samo 4008 i onda je izbacio bez problema datum samo naravno što to nije taj datum koji meni treba pa pretpostavljam da je je greška možda prilikom spremanja datuma u bazu i čitanja iz nje te još jedno pitanje
kako da u datagridviewu stavim funkciju da mi pretvara datum nazad u datum da mi nestoje brojevi samo

PS. sry što sam tek sada vidio i testiro kodove nisam mogao doči ovih dana za komp imam užasne glavobolje.

pozz i hvala
 
Odgovor na temu

[es] :: .NET :: Pomoc s bazom podataka i datumom...

[ Pregleda: 2203 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.