Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Profox  Mesaje fara legatura cu FoxPro  SET RANT ON...
 SET RANT ON
 
 1/21/2011 12:51:11 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






SET RANT ON
 (N/A)
Tin in mine chestia asta de prea multa vreme:

VB.NET e un kkt de limbaj daca vrei sa lucrezi cu date. Si inainte de a ma apuca de .NET am intrebat cel putin 50 de "meseriasi" de-astia de care limbaj sa ma apuc. Am primit raspunsuri favorabile pentru VB si un numar comparabil de raspunsuri favorabile pentru C#. Toate (fara exceptie) erau bazate pe afinitatile personale. "Mie imi place mai mult C#, de-aia il recomand", si viceversa. Da' n-am gasit unu' care sa-mi dea un raspuns obiectiv.

A trebuit sa invat eu si sa ma dau cu capul de pereti ca sa ajung la concluzia ca daca vrei sa faci aplicatii de baze de date, VB e raul personificat. Si iata un exemplu edificator:

Am o tabela pe server care are o coloana de tip Uniqueidentifier, sau de tip Date (nu e relevant, exemplul se aplica la ambele). Coloana asta suporta NULL si am NULL in campul respectiv, in inregistrarea cu id-ul 5, sa zicem.

In aplicatie am un business object, care expune proprietatile ID, Camp si o metoda numita GetData(), care descarca inregistrarea aia si stocheaza valorile din campuri in proprietatile corespunzatoare. Aici apare prima problema: valoarea care-mi vine de la server este DBNull.Value (echivalentul lui .Null. din VFP). Nu pot sa o pun direct in proprietati fiindca nu sunt declarate ca Nullable. Ok, modificam clasa si declaram proprietatea .Camp As Nullable Of Date.

Si acum urmeaza stupizenia absoluta. Desi este declarata ca Nullable, tot nu pot sa pun DBNull.Value in ea. Sunt nevoit sa apelez la o conventie de notatie pe care s-o interpretez la receptionarea valorii din server si la trimiterea valorii inapoi:

' la primire:
If IsDBNull(DataReader.Item("Camp"))
    Me.Camp = Date.MinValue
Else
    Me.Camp = cDate(DataReader.Item("Camp"))
End If

' la trimitere:
If Me.Camp = Date.MinValue
   _Command.Parameters.AddWithValue("@Camp", DBNull.Value)
Else
   _Command.Parameter.AddWithValue("@Camp", Me.Camp)
End If

(Exista si o alternativa la asta, cu Camp.HasValue, dar tot implica If...Else...Endif
=========================
Altfel spus: VB.NET habar n-are ce-i aia null. Declari o variabila Nullable, si cand pui Nothing in ea, in realitate nu e Nothing, ci o valoare.

Dim myGuid As Nullable (of Guid) = Nothing
Imediat dupa chestia asta, myGuid are valoarea 000000-0000-0000-00000000-0000. CARE NU ESTE NULL, la dracu' s-o ia. E altceva, nu NULL. Si trebuie sa testezi de fiecare data cand lucrezi cu ea. Am de-a IF-uri in program de mi se pune pata. Juma' de program e compus din IF-uri.

=============================
Ascultati un om batran: dati-va pe C#. Desi sintaxa e diferita si trebuie invatata, C# stie sa faca diferenta dintre Null si Empty, si asta e critica pentru bazele de date.



Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/21/2011 12:53:51 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: SET RANT ON
 (N/A)
Si imi aduc aminte cu regret ca in fox, dupa SQLExec(nHandle, "Select * From tabela where Id = 5") aveam un cursor cu doua campuri (in scenariul anterior), iar al doilea camp avea .Null. in el.

SCATTER NAME oRecord

Imi facea un obiect cu doua proprietati, una de tip numeric, cu 5 in ea, si cealalta de tip Date, cu Null in ea.

Voala de vezi. 1 singura linie de cod.

Fir-ar ai dracului cu vbnetul lor cu tot.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/21/2011 3:00:15 PM
User is offlinedni
420 posts
2nd


Re: SET RANT ON
 (N/A)
...in curind omenirea se va trezi din abureala OOP si m$...asa ca treceti pe prolog: seamana mai mult cu limbajul "articulat" al omului...
 1/21/2011 11:12:34 PM
User is offlineEugen Gliga
1052 posts
1st




Re: SET RANT ON
 (N/A)
Prima reactie a fost sa intru in VFP si sa sriu SET RANT ON :)

 1/22/2011 6:44:52 AM
User is offlinegabi123
106 posts
5th


Re: SET RANT ON
 (N/A)
da, java ati incercat ? .... ca tot o sa trebuie sa ne reorientam in curind
 1/22/2011 10:31:58 AM
User is offlineEugen Gliga
1052 posts
1st




Re: SET RANT ON
 (N/A)
Pai eu oricum sunt hotarat sa sar peste .net. M-am saturat de solutii proprietare a caror evolutie depinde de politica unei firme.
Java ar fi o solutie, dar si acolo trebuie sa fim foarte atenti:

http://www.dailytech.com/Report+Google+Appears+to+Have+Illegally+Put+Java+Source+Code+in+Android/article20726.htm


  Profox  Mesaje fara legatura cu FoxPro  SET RANT ON...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement