Program mi nečte další select pokud první nenajde hodnotu – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Program mi nečte další select pokud první nenajde hodnotu – Visual Basic – Fórum – Programujte.comProgram mi nečte další select pokud první nenajde hodnotu – Visual Basic – Fórum – Programujte.com

 

krpik0
Newbie
3. 6. 2020   #1
-
0
-

Zdravím 

Udělal jsem si nový Form a kde jsem si dal Labely kde chci vypisovat výpočty částek různých plateb a následně si udělat tisk.

První select mě vypočte platby hotovosti a druhý platby bezhotovostně

Pokud první select za dané období nesečte žádnou částku (nebyla platba v hotovosti) tak druhý select mě nic také nespočítá i když platby tam byly.

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Try
            Call conecDB()


            Form1.DateTimePicker1.CustomFormat = "yyyy-MM-dd"
            Form1.DateTimePicker1.Format = DateTimePickerFormat.Custom
            Form1.DateTimePicker2.CustomFormat = "yyyy-MM-dd"
            Form1.DateTimePicker2.Format = DateTimePickerFormat.Custom

            Dim cmd As New MySqlCommand("select sum(ROUND(s.celkovacena,2)) from platby  where hotovost = 1 and bezhotovost = 0 and placeno = 1 and storno = 0 and cas BETWEEN '" & Form1.DateTimePicker1.Text & "' AND '" & Form1.DateTimePicker2.Text & "' ", connDB)
            cmd.ExecuteNonQuery()

            Dim i As MySqlDataReader = cmd.ExecuteReader()
            While i.Read()
            Label3.Text = i("sum(ROUND(s.celkovacena,2))")


            End While
            i.Close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)

        End Try
        Try


            Dim cmm As New MySqlCommand("select sum(ROUND(s.celkovacena,2)) from platby  where hotovost = 0 and bezhotovost = 1 and placeno = 1 and storno = 0 and cas BETWEEN '" & Form1.DateTimePicker1.Text & "' AND '" & Form1.DateTimePicker2.Text & "' ", connDB)

            Dim y As MySqlDataReader = cmm.ExecuteReader()

            While y.Read
                Label5.Text = y("sum(ROUND(s.celkovacena,2))")

            End While
            y.Close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
      connDB.Close()
            connDB.Dispose()

        End Try

    End Sub

Děkuji za pomoc

Nahlásit jako SPAM
IP: 46.174.58.–
Jerry
~ Anonymní uživatel
459 příspěvků
4. 6. 2020   #2
-
0
-

#1 krpik
brouku nechceš radši co nejrychleji přejít na C# ?? a pro kontroly SQL dotazů bys měl používat MS SQL Management studio....

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:943d:9029:1d56:352f...–
krpik0
Newbie
4. 6. 2020   #3
-
0
-

#2 Jerry
Na dotazy mam Heidi. O C# uvažuji ale už se mi to nechce psát znova když už to mám téměř hotové

Nahlásit jako SPAM
IP: 46.174.58.–
gna
~ Anonymní uživatel
1182 příspěvků
4. 6. 2020   #4
-
0
-

Já tam nic okatého nevidím. Není možné, že tam opravdu vyhovující data nejsou? To hotovost/bezhotovost si vyloženě říká o to, abys to někde nastavil blbě.

Nahlásit jako SPAM
IP: 213.211.51.–
krpik0
Newbie
4. 6. 2020   #5
-
0
-

#4 gna
tohle je dobře ono se stane že v jednom dni tam neni třžba v hotovosti ale jen bezhotovostně takže on projede za daný den scripty první select hotovost tam nenajde nic tak už mi neprojede další select a to nevím proč . ukončené to mam myslím dobře takže pokud on nic nenajde tak by label měl byt prázdný ukončit se  a potom jede script ,který hledá částku bezhotovosti. 

Ale pokud v daném dní mam hotovost tak ji spočte a potom udělá i script bezhostovost správně

Nahlásit jako SPAM
IP: 46.174.58.–
gna
~ Anonymní uživatel
1182 příspěvků
4. 6. 2020   #6
-
0
-

#5 krpik
Já chápu, co ti to dělá, ale přijde mi divné, že by se to dělo proto, že první select nic nevrátí. Tak jsem tipnul, že když to máš tak blbě navržené (na formu úhrady ti stačí jeden sloupec), tak možná máš blbě i ty podmínky/data.

Každopádně ExecuteNonQuery je nesmysl. A při vyjímce nezaviráš readery a naopak connection zavíráš jen při vyjímce.

Nahlásit jako SPAM
IP: 213.211.51.–
krpik0
Newbie
4. 6. 2020   #7
-
0
-

#6 gna
Forma uhrady je správně v aplikaci mam tlačítko hotově nebo bezhotovostně.

Hotovost udělá insert... a hotovost dá 1 . a druhý dá zase bezhotovost 1.

nebudu popisovat tabulku kde jsou natukané jednotlivé položky a z čeho se dělá výpočet to s tímto nesouvisí.

Ještě mě napadlo tam dát že pokud ten select nic nenajde tak se napíše do Label "0". 

If IsNothing(i) Then
Nahlásit jako SPAM
IP: 46.174.58.–
MilanL+1
Expert
4. 6. 2020   #8
-
0
-

#7 krpik
vydím tam jedinej rozdíl, v té druhé části nemáš řádku s executenonquery

jinak byl by takový problém sloučit to do jednoho dotazu se sloupcen hotovost v selectu,  (hotovost=1 or bezhotovost=1) and.. ve where a pak podle hotovost nagroupovat a ve while podmínkou na hotovost to umístit do daného labelu?

Navíc co jsem viděl příklady na netu tak ty k obsahu readeru přistupovali spíš přes indexy než ty složitý názvy, možná by ti to u té sumy zjednodušil alias

Nahlásit jako SPAM
IP: 185.112.167.–
krpik0
Newbie
5. 6. 2020   #9
-
0
-

#8 MilanL
No jako script mohu upravit ale nevím asi mohu upravit ale nějak mě nenapadá jak to vyčítat z jednoho selectu hotovost a bezhotovost do dvou labelu.Navíc tam budu stejně řešit další select k vůli výpočtu DPH

Nahlásit jako SPAM
IP: 46.174.58.–
MilanL+1
Expert
5. 6. 2020   #10
-
0
-

#9 krpik 

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Try
            Call conecDB()

            Form1.DateTimePicker1.CustomFormat = "yyyy-MM-dd"
            Form1.DateTimePicker1.Format = DateTimePickerFormat.Custom
            Form1.DateTimePicker2.CustomFormat = "yyyy-MM-dd"
            Form1.DateTimePicker2.Format = DateTimePickerFormat.Custom

Dim cmd As New MySqlCommand("
            SELECT sum(ROUND(s.celkovacena,2)) AS suma, hotovost 
            FROM platby  
            WHERE (hotovost = 1 or bezhotovost = +) 
                   and placeno = 1 and storno = 0 
                   and cas BETWEEN '" & Form1.DateTimePicker1.Text 
                   & "' AND '" & Form1.DateTimePicker2.Text & "' 
            GROUP BY hotovost ", connDB)

            cmd.ExecuteNonQuery()

            Dim i As MySqlDataReader = cmd.ExecuteReader()
            While i.Read()
	    	if i("hotovost")=1 then   
			//nebo ="1"//
            		Label3.Text = i("suma")
		else
                	Label5.Text = i("suma")

            End While
            i.Close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)

      	connDB.Close()
        connDB.Dispose()

        End Try

    End Sub

navíc pokud budeš dělat DPH pro víc sazeb, tak to budeš muset opět nějak rozlišit

jako SQL ti vše spočítá, ale je zbytečné na každou věc dělat extra query.

Nahlásit jako SPAM
IP: 91.139.9.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

První program — založil Yohaku

Můj první program - Java — založil Radek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý