<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META content=text/html;charset=utf-8 http-equiv=Content-Type> <META name=GENERATOR content="MSHTML 8.00.6001.18882"> <STYLE></STYLE> </HEAD> <BODY style="PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px" id=MailContainerBody leftMargin=0 topMargin=0 bgColor=#ffffff name="Compose message area" CanvasTabStop="true"> <DIV><FONT size=2></FONT></DIV> <DIV>Laba,</DIV> <DIV> </DIV> <DIV><FONT size=2 face=Arial> Su praejusia Valentino diena! :)</FONT></DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2 face=Arial></FONT> </DIV> <DIV><FONT size=2></FONT> </DIV> <DIV><FONT size=2>3. Kintamuju priskyrimas ten yra kiekvienoj if sakoj, galima ir kitaip padaryti, bet ar tai turi itakos, vistiek priskyrimas vyks tik vienu is triju atveju.</FONT></DIV> <DIV><FONT size=2></FONT> </DIV> <DIV> Tai ne kiek itakoja funkcionaluma kiek programuotojui su laiku apsunkina kodo supratima, na bent jau as turiu tokia taisykle, kuo maziau kodo tuo maziau bugu, jei tarp kitko tai copy pastinanti programmeri is viso verta ismest lauk (aisku cia netaikau jums).</DIV> <BLOCKQUOTE style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px" dir=ltr> <DIV><FONT size=2>4. Formuodama uzklausa prie kiekvienos dalies pridedu " AND " 5 simbolius, o paskui jau suformavus stringa, as nukerpu paskutinius 5 simbolius</FONT></DIV> <DIV><FONT size=2> <FONT face=Calibri>> If Not IsNull(strfiltras) And (Len(strfiltras) > 0) Then<BR>> strfiltras = Mid(strfiltras, 1, Len(strfiltras) - 5)</FONT></FONT></DIV> <DIV><FONT size=2 face=Calibri></FONT> </DIV></BLOCKQUOTE> <DIV dir=ltr><FONT size=2 face=Arial>Jau mineta taisykle "Kuo maziau kodo tuo maziau bugu!" :) kam sito reikia ? vien del to kad net ir paskutine salyga yra:</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Calibri>> ''''''Dar vienas Option group 'Apmoketi_reisai'<BR>> If Me.Apmoketi_reisai = 1 Then<BR>> strfiltras = strfiltras & "[SaskID] is not Null AND "<BR>> ElseIf Me.Apmoketi_reisai = 2 Then<BR>> strfiltras = strfiltras & "[SaskID] is Null AND "<BR>> End If</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Juk daug patogiau pridet visada " AND darKazkas=darKazkam", o ne " darKazkas=darKazkam AND " tada galima miegot ramiai :) o siaip kaip ir minejau, suformuota uzklausa issivest kur nors ar tai MsgBox ar tai Debug.Print ir poto tikrint paemus kas tiksliai "nesiklijuoja" paleidinejant kaip query, tokia metodika efektyviausia tokiose klaidu situacijose.</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Jei tektu kitam zmogui taisyt net ir su daug patirties tai jam reiketu 10-20 minuciu suprast kas tai.. ta galutine eilute, primetus jei kazkokia sistema pastoviai tobulinama ir laikas nuo laiko reikia isigilinti i ja tai kiekviena karta bus prarandama kazkiek minuciu be reikalo, jei yra nelabai aiskiu kodo strukturu kaip tokios - kurios tiesiogiai nesusija su biznio logika - patarciau komentarus deliot kad butu aisku ka ji daro konkreciau, tai palengvina susigaudyma.</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Antra vertus jei jau taip patinka stilius su paskutiniu AND, tai pasirasyti tam patarciau funkcija bent ;)</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial>Public function RemoveLastAnd (string sql)</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> Dim retVal As string = sql</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> If Not isNull(sql) Then</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> If Len(sql)>4 Then <EM>' Tiesiog tikrinant ar <FONT face=Calibri><STRONG>And (Len(strfiltras) > 0)</STRONG> yra vistiek luzio tikimybe, nes removinama ne 1 o 5 simboliai, neprofesionalu taip, ka removint ketinama tiek reik ir tikrint ar yra</FONT></EM></FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> RemoveLastAnd = <FONT face=Calibri>Mid(strfiltras, 1, Len(sql) - 5)</FONT></FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> End If</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> End if </FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial>End Function</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial>'' Thats All! :) nors as dar tikrinciau ar paskutinis zodis yra AND </FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial>stilium: MID(RTRIM(sql),Len(sql-3),3) = AND</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial>Siaip pas mane populiarus tikrinimas jei ne Null stringas, tada as ji TRIM kad isnaikint visus tarpus ir tada ziuriu jo ilgi, cia aisku ranka neivedineja uzklausu tai nereikia, bet siaip tiesiog is patirties sakau...</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial>Dar keli patarimai (rasau bendrai, ne vien VB, tinka praktiskai visiem):</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> 1. Jei turima tik 1-5 kintamuosius funkcijoje/metode (tai tinka ne vien VBA) tai galima juos uzvadinti paprasciau, strfiltras gal ir technologiskai stiliovai, bet blasko demesi, smegenim reikia bent jau puse sekundes perskaityt antra dali ir suvokt kas tai, pavadint galima tiesiog: filtras arba sql, maisalynes nebus nes kintamuju ner daug, o jei jau taip patinka priekyje rasyti str tai esme kintamojo bent jau patarciau rasyti is didziosios raides, pvz. strFiltras, tada zinomas ir tipas, tuo paciu ir galima greit atkreipt demesi kur kintamojo pavadinime prasideda jo esme ir ja perskaityt.</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> 2. Jei yra daug kintamuju - tai signalas, kad skaldyt butina i daug funkciju, klasiu ir t.t... gerai kai tai tampa inkstinktu ir 7 pojuciu justi kada laikas tam :)</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> 3. Per daug metu evoliucionavau ivairius funkciju/metodu, valdymo elementu, kintamuju, SQL proceduru ir t.t.. uzvadinimo stilius, tokie kaip strfiltras.</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Pvz funkciju, SQL proceduru uzvadinimai:</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> GetGatves</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> UpdateGatve</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> DeleteGatve</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Yra neefektyvus, jei tai SQL procedura jie issidestys pagal funkcionaluma o ne biznio logika, kai programuotojas dirba su kazkokiu konkreciu objektu, pvz Gatvem tai dirba su jom ir operuoja daugiau funkcijas su jom, tai kam sau apsunkint gyvenima ir det alfabetine tvarka ne i tema juos, tai aisku bus gal netaisiklingai angliskai bet patogu, tai patogu taip pat ir kas liecia autocomplete ant MSVS.NET, pvz turint:</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> GatvesList</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> GatveUpdate</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> GatveDelete</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> GatveGetFullInfo</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Laikantis tokio stiliaus visada turesite vienoje kruvoje viska kas susija su konkreciu objektu ir nereikes 2 kart netycia sukurti su tokiu pat funkcionalumu proceduras kaip nutinka kartais prie dideliu projektu ;)</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Toliau yra dar viens namingo metodas kuris issaugoja kintamojo tipa jei jau labai bijoma susipainiot ir tuo paciu aiskesnis, pvz:</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> filrasStr</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> gatvesCombo ar tai gatvesCmb</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Nors as controlus uzvadinu taip:</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> ComboBox CmbName</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> ListBox LbxName</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> TextBox TxtName</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> ListView LvwName</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> DataGridView DgrName</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> PropertyGrid PgrName</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> Button CmdName</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> UI atveju daug darbo turint su UI kartais pranasumas controlo tipas priekyje, tai palengvina tai kad programuotojas is karto zino su kuo dirba ir tuo paciu labai aisku kas tai, nes pavadinima Name lengva atskirt ir perskaityt.</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Dar kaikurie gal klaus kodel pirmoji didzioji, ne txtName, o TxtName, siaip tai kilo nuo Microsoft Visual C++ dirbant su MFC bibliotekom ir ju wizardais, kada MFC formoje wizardu kuriant eventa jis suliedavo controlo pavadinima su evento pavadinimu, as dabar labai tiksliai nepamenu kaip jis tai dare, bet kada budavo is mazosios gaudavau kazka tokio:</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> OnClickcmdOk</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Rezultate budavo neaisku kas cia greit zvilgtelejus ir ipratau controlus vadint pirmaja didziaja tada gauni kazka tokio:</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> OnClickCmdOk</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial> Kuris aiskiau kas cia ? :) sakysit durnam aisku kad tai buttonas nes OnClick, na bet ne butinai, tai vel papildomas laikas skaityti visa pilna pavadinima ;)</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial> </FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <BLOCKQUOTE style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px" dir=ltr> <DIV><FONT size=2 face=Calibri></FONT> </DIV> <DIV><FONT size=2 face=Calibri>O siaip, tai labai aciu uz patarimus, issiaiskinau kur kibo, ir pabandzius ivairius variantus, atradau viena, kuris veike taip kaip man reikia.</FONT></DIV> <DIV><FONT size=2 face=Calibri>O padariau taip:</FONT></DIV> <DIV><FONT face=Calibri>strfiltras = strfiltras & "([VaztarTipas] = 'P' OR [VaztarTipas] = 'PF') And "</FONT></DIV> <DIV><FONT face=Calibri><FONT size=2 face=Arial>pakeiciau i:</FONT> </FONT></DIV> <DIV><FONT face=Calibri>strfiltras = strfiltras & "(VaztarTipas like 'P') And "</FONT></DIV></BLOCKQUOTE> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial>Nu jei kas visada prasom :) </FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial></FONT> </DIV> <DIV dir=ltr><FONT size=2 face=Arial>Gal dar kada pratesiu :) dabar sioks toks langas tarp projektu tai ilsiuosi :)</FONT></DIV> <DIV dir=ltr><FONT size=2 face=Arial>JDM.</FONT></DIV></BODY></HTML>