Tema: Re: Q: Access (html)
Autorius: Jornada Del Muerto
Data: 2010-02-17 13:31:01
<!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>&nbsp;</DIV>
<DIV><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; Su praejusia Valentino diena! 
:)</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV><FONT size=2></FONT>&nbsp;</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>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; 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&nbsp;tai copy pastinanti programmeri is 
viso&nbsp;verta ismest&nbsp;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>&nbsp;<FONT face=Calibri>&gt;&nbsp; If Not 
  IsNull(strfiltras) And (Len(strfiltras) &gt; 0) 
  Then<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strfiltras = Mid(strfiltras, 1, 
  Len(strfiltras) - 5)</FONT></FONT></DIV>
  <DIV><FONT size=2 face=Calibri></FONT>&nbsp;</DIV></BLOCKQUOTE>
<DIV dir=ltr><FONT size=2 face=Arial>Jau mineta taisykle "Kuo maziau kodo tuo 
maziau bugu!"&nbsp;:) kam sito reikia ?&nbsp;vien del to kad net ir paskutine 
salyga yra:</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Calibri>&gt; ''''''Dar vienas Option group 
'Apmoketi_reisai'<BR>&gt;&nbsp; If Me.Apmoketi_reisai = 1 
Then<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; strfiltras = strfiltras &amp; "[SaskID] is 
not Null AND "<BR>&gt;&nbsp; ElseIf Me.Apmoketi_reisai = 2 
Then<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; strfiltras = strfiltras &amp; "[SaskID] is 
Null AND "<BR>&gt;&nbsp; End If</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; Juk daug 
patogiau&nbsp;pridet visada&nbsp;" 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&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>Public function RemoveLastAnd (string 
sql)</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; Dim retVal As string = 
sql</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; If Not isNull(sql) 
Then</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; If 
Len(sql)&gt;4 Then&nbsp; <EM>' Tiesiog tikrinant ar <FONT 
face=Calibri><STRONG>And (Len(strfiltras) &gt; 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>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; RemoveLastAnd = <FONT face=Calibri>Mid(strfiltras, 1, 
Len(sql) - 5)</FONT></FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
End If</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</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:&nbsp;&nbsp;&nbsp;&nbsp;MID(RTRIM(sql),Len(sql-3),3) = 
AND</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>Siaip pas mane populiarus tikrinimas jei ne 
Null stringas, tada as ji&nbsp;TRIM kad isnaikint visus tarpus&nbsp;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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 3. Per daug metu 
evoliucionavau ivairius funkciju/metodu, valdymo elementu,&nbsp;kintamuju, SQL 
proceduru ir t.t.. uzvadinimo stilius, tokie kaip strfiltras.</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; Pvz funkciju, SQL 
proceduru uzvadinimai:</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; GetGatves</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; UpdateGatve</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; DeleteGatve</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; GatvesList</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; GatveUpdate</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; GatveDelete</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 
GatveGetFullInfo</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; filrasStr</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; gatvesCombo ar tai 
gatvesCmb</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; Nors as controlus 
uzvadinu taip:</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; ComboBox 
CmbName</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 
ListBox&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LbxName</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; TextBox 
&nbsp;&nbsp;&nbsp; TxtName</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; ListView 
&nbsp;&nbsp;&nbsp; LvwName</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; DataGridView 
DgrName</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; PropertyGrid 
PgrName</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; Button&nbsp;&nbsp;&nbsp; 
CmdName</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 
OnClickcmdOk</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 
OnClickCmdOk</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp; </FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</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>&nbsp;</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 &amp; "([VaztarTipas] = 'P' OR 
  [VaztarTipas] =&nbsp; 'PF') And "</FONT></DIV>
  <DIV><FONT face=Calibri><FONT size=2 face=Arial>pakeiciau i:</FONT> 
  </FONT></DIV>
  <DIV><FONT face=Calibri>strfiltras = strfiltras &amp; "(VaztarTipas&nbsp;like 
  'P') And "</FONT></DIV></BLOCKQUOTE>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</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>&nbsp;</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>