Search  
Thursday, September 21, 2017 ..:: Articole » Ce-ar fi dacă am tăia pâinea înainte de a o vinde? ::.. Register  Login
 Articole Minimize

Ce-ar fi dacă am tăia pâinea înainte de a o vinde?

Autor: Whil Hentzen
Notă: În această expunere veţi găsi o analiză a evoluţiei unei tehnologii şi idei despre modul în care această tehnologie poate fi aplicată într-un program scris în Visual FoxPro.

Întotdeauna am fost puţin refractar la noile tehnologii. Sunt mai multe motive pentru care procedez aşa: mai întâi, un proverb american pe care l-am citit într-o carte de Win95 acum mulţi ani: "Pionierii sunt cei cu săgeţile înfipte în spate". În al doilea rând, mi se pare la fel de important ca producătorii de software să susţină în continuare tehnologia respectivă. În acest sens, voi da un exemplu arhicunoscut, deja: Visual J++, care a fost cu eleganţă trecut pe linie moartă de către Microsoft. Vă vine să credeţi? Este, totuşi, Java...

Pe de altă parte, sunt primul care instalează un nou program în variantă beta - şi, evident, primul care se plânge dacă nu funcţionează. Îmi place să mă joc cu chestii noi într-o măsură mai mare decât toţi ceilalţi (toţi prietenii mei spun: "Eu nu-mi instalez versiuni beta ale sistemului de operare!")

De exemplu, noul Windows ME are o facilitate numită "System Restore" care permite revenirea la o configuraţie anterioară - fie vorba între noi, chestia asta chiar este bună. Trebuia de mult aşa ceva. O folosesc, de exemplu, când trebuie să instalez un software mai vechi; se ştie că HTML Help WorkShop nu funcţionează corect cu fişierele generate de Office 2000. În această situaţie, este simplu să instalezi Office 97 peste Office 2000, să-mi fac treaba şi apoi să revin la starea iniţială, având Office 2000 neatins. Foarte convenabil.

Oricum, eu recomand prudenţă în privinţa instalării de software nou, atunci când nu este nici avantaj în asta. De exemplu, în ultimii ani, am văzut o mulţime de laude aduse diferitelor arhitecturi software - provenite de la marile firme de software - deghizate în "documentaţii tehnice".

Comentariile pieţei sună bine, demo-urile sunt superbe, dar când instalez una din aplicaţii, constat cu tristeţe că sunt o mulţime de părţi lipsă, că performanţa nu este cine ştie ce, că documentaţia este incompletă şi că aplicaţiile distribuite sunt instabile.

Nici una dintre aceste firme de soft nu s-a gândit să ne ajute în ceea ce este premisa fundamentală a programării - să fim capabili să creăm cu succes aplicaţii în perioade diferite, pe sisteme de operare diferite şi cu versiuni diferite ale tehnologiilor utilizate. Imediat ce un produs pare să funcţioneze, tipii de la dezvoltare trec la generaţia următoare, lăsându-ne nouă produsul respectiv, aşa cum e: bun sau rău.

În oricare din situaţiile descrise mai sus, beneficiul trecerii imediate la o nouă tehnologie, la o nouă platformă sau arhitectură nu este suficient pentru a justifica greutăţile întâmpinate în timpul implementării. Hai să o lăsăm să fiarbă la foc mic pentru o vreme. Să o lăsăm să se maturizeze.

Dar tehnologiile se maturizează, şi astfel devin foarte folositoare. Vă aduceţi aminte de DDE? Perioada aia când era atât de rudimentară şi de lipsită de facilităţi încât era aproape de nefolosit (cu excepţia cazurilor disperate)? Între timp, DDE a devenit "Automatizare" (Automation) - cu mici modificări ale numelui de-a lungul timpului - şi este un instrument excepţional acum. A meritat să aşteptăm.

Unii au dat de conceptul Automation de-a lungul timpului, şi au oscilat între a căsca şi a întoarce pagina. Alţii nici măcar n-au ajuns acolo, şi este posibil să se simtă timoraţi în explorarea domeniului. Dar nimic nu este uşor din prima încercare; trebuie să încaleci de mai multe ori ca să-ţi placă să călăreşti. Este timpul să ne apropiem de această tehnologie.

De curând am implementat e-mail-ul automatizat în aplicaţiile pentru clienţi (cel puţin pentru clienţii care au un sistem stabil de e-mail) şi le-a plăcut. Bineînţeles, aceasta înseamnă şi un upgrade la Outlook 2000, dar a fost uşor să-i conving după ce au văzut că pot să trimită şi să primească prin e-mail 90% din comenzi şi oferte imediat după click-ul pe butonul "Salvare". Pentru a obţine acelaşi efect, nu este nevoie să petreceţi zile întregi citind cărţi, răsfoind documentaţii şi întrebând în toate părţile. Puteţi să faceţi toate astea în aproximativ 500 de cuvinte - şi iată cum:

Cum să creez un client e-mail simplu

Să presupunem că procesul normal de generare a unei oferte implică şi o confirmare e-mail către client. Confirmarea trebuie să conţină informaţii despre produsele oferite, data livrării, condiţiile de livrare, modul de plată şi alte informaţii similare.

Undeva în fereastra de generare a ofertei, ar trebui să plasaţi un buton "Trimite e-mail", care ar trebui să lanseze un formular numit "Trimitere e-mail către client". Aveţi un exemplu în figura alăturată:

sendemail.gif


Formularul trebuie apelat cu parametri, cum ar fi numele destinatarului, adresa e-mail şi informaţii referitoare la ofertă (numărul, data, lista produselor, etc). Hmmmmmm, staţi puţin! Poate totuşi nu vreţi să transmiteţi datele acestea ca parametri - este posibil să depăşiţi numărul maxim de parametri - 27. Aţi putea să trimiteţi un obiect parametru (dacă este un concept nou pentru dvs, luaţi-l de bun; o să îl detaliez în altă expunere), sau poate aţi putea să introduceţi în DataEnvironment-ul formularului un set de vederi parametrizate care să conţină datele de care aveţi nevoie. În acest moment, nu este relevantă metoda pe care o veţi folosi; este suficient să considerăm că aveţi datele necesare în formular.

Odată ajuns în formular, numele şi adresa destinatarului sunt deja scrise în textbox-urile corespunzătoare (eu le-am lăsat editabile pentru a permite modificări de ultim moment). Următoarea sarcină este crearea liniei subiectului şi a corpului mesajului.

Aici este locul unde mă distrez puţin. În metoda Init a formularului examinez datele disponibile şi creez subiectul mesajului funcţie de acele date. Dacă datele se referă la o ofertă, subiectul este ceva de genul "Oferta nr. 1234 din 01 ianuarie 2000" (mie îmi plac datele calendaristice în formatul acesta). Dacă datele se referă la un contract sau o comandă, subiectul este cam aşa: "Contract 1234 din 01 ianuarie 2000 - livrare software evidenţă".

În pasul următor, trebuie să construiesc corpul mesajului. În figura de mai sus se vede un buton intitulat "Construire conţinut" care preia datele existente şi construieşte corpul mesajului. Cele cinci check box-uri din stânga butonului servesc drept comutatoare logice pentru conţinut, astfel încât utilizatorul să poată controla modul în care îşi construieşte mesajul. Dacă dvs. doriţi mai multă complexitate, puteţi implementa o listă cu valori şi comentarii standardizate, pe care utilizatorul să le poată selecta cam în acelaşi mod în care secretarele scriu documentele compunându-le din modele diferite...

Evident, numărul de magie se petrece când utilizatorul face click pe butonul "Trimitere e-mail". Iată şi codul aferent:

m.lcError = ""
IF EMPTY(ThisForm.txtAdrEmail.Value)
	m.lcError = "Nu aţi introdus adresa e-mail a destinatarului."
ENDIF
IF !("@" $ ThisForm.txtAdrEmail.Value)
	m.lcError = "Adresa e-mail nu conţine caracterul '@'."
ENDIF
IF !EMPTY(m.lcError)
	MESSAGEBOX(m.lcError, 0, ThisForm.Caption)
	RETURN
ENDIF
IF MESSAGEBOX("Vrei să trimiţi mesajul?", ;
	292, ThisForm.Caption) = 6
	oOutLookObject = CreateObject("Outlook.Application")
	olNameSpace = oOutlookObject.GetNameSpace("MAPI")
	oMailOut = oOutLookObject.CreateItem(olMailItem)
	oMailOut.To =  ThisForm.txtAdrEmail.Value
	oMailOut.Subject = ThisForm.txtSubiect.Value
	oMailOut.Body = ThisForm.edtContinut.Value
	oMailOut.Send
	oOutlookObject = .NULL.
	RELEASE oOutlookOjbect
ELSE
	WAIT WINDOW NOWAIT "Nu am trimis mesajul"
ENDIF
THISFORM.RELEASE

În codul de mai sus există un aspect care nu iese în evidenţă, dar care este bine documentat în Help-ul din Microsoft Outlook 2000 - în capitolul "Microsoft Outlook Visual Basic Reference". Este vorba despre linia

oMailOut = oOutLookObject.CreateItem(olMailItem)
Metoda CreateItem trebuie să primească un parametru numeric. În acest caz, olMailItem trebuie să fie iniţializat cu valoarea zero (0) undeva mai sus.

Prima parte a codului verifică dacă adresa e-mail a destinatarului este corectă (sintactic). Aţi putea să îmbunătăţiţi codul, verificând subiectul şi corpul mesajului, dacă doriţi.

Partea a doua crează un obiect pointer către Outlook, crează un obiect Mail, dă valori câtorva proprietăţi, cum ar fi destinatarul, subiectul, ş.a.m.d., apoi trimite mesajul. În final, pointerul către Outlook este eliminat. Gata. Uite ce simplu este.

Evident, puteţi face lucruri mult mai complexe, dar exemplul meu este suficient pentru a vă da impulsul iniţial. Dacă doriţi mai multe proprietăţi, puteţi folosi Object Browser-ul din Visual Basic pentru a examina modelul obiectului Outlook îndeaproape. De asemenea, puteţi folosi (ca şi mine, dealtfel, - eu nu sunt programator de VB) documentaţia care însoţeşte Microsoft Outlook. Este foarte bine făcută.

Concluzie

Iată cum, pe măsură ce o tehnologie se maturizează, putem construi aplicaţii profesionale. De asemenea, putem repeta aceasta de oricâte ori dorim. Cu Automation, nu numai că le vindem pâinea, dar le-o şi tăiem felii...


    

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement