Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Asus Zenbook-bateria nu se mai in...

Recomandare vopsitorie de calitat...

Merita sa iti pui implant dentar ...
 Exploziile la North Stream - Sabo...

Plachete omagiale "Eminescu 2...

Economia... in defavoarea clasei ...

Cati bani consumati pt naveta cu ...
 Tragere la sorti preliminarii EUR...

ALL QUIET ON THE WESTERN FRONT(20...

Casti, DAP-uri, dongles si DAC/AM...

Cum fac reclama pe youtube?
 Pedichiurist(a) la domiciliu

Nisi 9mm F/2.8 pentru APS-C&MFT

Cum se poate metamorfoza o imagin...

Pas cu Pas: Cum se poate face o a...
 

format data uk dd-mm-yyyy

- - - - -
  • Please log in to reply
27 replies to this topic

#19
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
Gata mi-am completat codul pentru campul data din formular.

Private Sub TextBox50_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox50 = IsNumeric(Value) Then
i = Left(TextBox50.Value, 2)
j = Mid(TextBox50.Value, 3, 2)
k = Mid(TextBox50.Value, 5, 4)

TextBox50.Value = i & "-" & j & "-" & k
End If

If Len(TextBox50.Value) <> 10 _
	Or Left(TextBox50.Value, 2) > 31 _
	Or Mid(TextBox50.Value, 3, 2) > 12 Then

TextBox50.SelStart = 0
TextBox50.SelLength = Len(TextBox50)
Cancel = True

End If

If TextBox50.Value = "" Then
Cancel = False
End If

TextBox51 = Format(DateAdd("d", -1, Format(DateAdd("m", TextBox49.Value, TextBox50.Value))), "dd-mm-yyyy")


End Sub

Am avut nevoie de cod pentru data pentru ca vreau ca in momentul in care introduc valabilitatea politei (6luni de exemplu) si data de intrare in valabilitate sa-mi returneze automat sfarsitul valabilitatii politei de asigurare.
Am reusit cu ajutorul tau , mersi.

Attached Files



#20
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006
Vezi ca ti-am atasat o solutie care iti merge independent de regional settings sau mai stiu eu ce setari.

Daca tot mentionai (in alt post, in alte vremuri) ca vrei sa inveti, fa-ti rost de carti si apuca-te serios de studiu. Si cel mai important, incearca sa te organizezi ca mod de gandire: ce se da, ce se cere(unde trebuie sa ajungi) si, eventual, cum.
1.
Private Sub UserForm_load()
TextBox1.Text = Format(TextBox1.Text, "dd-mm-yyyy")
End Sub

Quote

Am observat ca daca sterg codul pentru userform_load nu se schimba nimic.
Exact d'asta te-am intrebat ce face FORMAT. Pentru ca pus asa cum e pus aici, nu are nici o noima. In plus .. ce anume vrei sa formatezi? Ce este in TextBox si unde incarci ceva, daca incarci?

2. La nivel de incepator (si nu numai) nu lucrezi cu chestii de genu:                     functie(functie(functie(functie(functie())))) decat daca esti foarte sigur pe fiecare functie.
Si apoi, cand vezi ca nu-ti merge, ia fiecare argument in parte, fiecare functie in parte si printeaza valorile. (debug.print, msgbox, executie pas cu pas)

3. Sa schimbi setarile sistemului ... asta merge pe computerul tau de acasa ... la altii nu faci/nu impui asa ceva. E obligatia ta ca programator sa te asiguri de corectitudinea datelor pe care le preiei si, daca e cazul, sa impui restrictii.


PS @Sandstorm vezi, d'aia ziceam ce ziceam .... prietenu' nostru n'anvatat nimic. Acum o sa se supere pe mine dar ... asta e! Stie ca exista Format, DateAdd ... dar la ce folosesc si mai ales cum sa le foloseasca, IOC!

Attached Files



#21
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
Se vede din cod ca stii VB dar asta nu inseamna sa-i subapreciezi pe altii (pretinzi ca nu stiu ce este dateadd). Daca nu stiam ce inseamna DateAdd nu cred ca puteam face codul

TextBox51 = Format(DateAdd("d", -1, Format(DateAdd("m", TextBox49.Value, TextBox50.Value))), "dd-mm-yyyy")

Oricum fiind incepator iau functiile bucata cu bucata, le probez cu un msgbox sa vad rezultatul si apoi trec mai departe si compun functiile.

#22
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009

Quote

Se vede din cod ca stii VB dar asta nu inseamna sa-i subapreciezi pe altii (pretinzi ca nu stiu ce este dateadd)

Sa stii ca nu a zis-o cu rautate.
A zis bine. Cand te apuci de o aplicatie trebuie sa te gandesti ce vrei sa realizezi, cum se poate face acea aplicatie.
De aceea este bine sa ai o baza de inceput inainte de a te inhama la asa ceva.
Ca incepator nu este bine sa se faca saltul la functii si comenzi avansate fara sa ai definita o baza.

#23
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007

 Sandstorm, on 18th November 2010, 16:25, said:

Sa stii ca nu a zis-o cu rautate.
A zis bine. Cand te apuci de o aplicatie trebuie sa te gandesti ce vrei sa realizezi, cum se poate face acea aplicatie.
De aceea este bine sa ai o baza de inceput inainte de a te inhama la asa ceva.
Ca incepator nu este bine sa se faca saltul la functii si comenzi avansate fara sa ai definita o baza.

Crezi ca daca zicea cu rautate plangeam?
De aplicatia asta m'am apucat asa ca chestie, nu am avut ca scop initial sa o fac dar dupa ce am inceput sa lucrez la ea ma loveam de fel de fel de chestii pe care nu stiam sa le rezolv, au devenit provocari pentru mine si am cautat solutii. Asa ca faza cu "cand te apuci de o aplicatie trebuie sa te gandesti ce vrei sa realizezi" nu isi are sensul in contextul dat.

#24
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006

 credit, on 18th November 2010, 17:04, said:

Se vede din cod ca stii VB dar asta nu inseamna sa-i subapreciezi pe altii (pretinzi ca nu stiu ce este dateadd). Daca nu stiam ce inseamna DateAdd nu cred ca puteam face codul

Nu vreau sa intram in polemici de genu asta.
Daca o sa recitesti cu atentie ce-am scris si eventual o sa citesti si printre randuri o sa descoperi ca nu am zis "ca nu stii ce este" - evident daca nu stiai nu am mai fi avut discutia asta :) - ci ca nu stii sa le folosesti(apelezi) foarte bine, foarte corect, etc.
De exemplu: datatype-ul parametrilor, valorii intoarse de o functie, etc. Da, stiu. Poate parea un moft, un fel de paranoia. Si poti chiar sa spui "merge foarte bine si asa, de ce sa ma mai stresez si, eventual, sa mai scriu nu stiu cate linii de cod". DAR ... nu inseamna ca e si corect si, mult mai important, nu stii cat tine si cand crapa. Si problema, in cazul tau, e tocmai faptul ca esti incepator. Si incepand si apoi continuand la modul asta fix asa te vei forma: "lasa ca merge..." si vei aplica conceptul asta si la chestii mai serioase decat o simpla conversie de tip de data.

Am zis deja, VB-ul e unul dintre limbajele care iti face automat conversia in marea majoritate a cazurilor: un lucru care are parti bune si parti rele. Nu strica deloc insa sa faci singur conversia si sa folosesti la apel, preluare rezultat exact tipul de data cerut.

Apoi, partea de validare a input-ului. Chiar si cand folosesti doar tu aplicatia dar cu atat mai mult atunci cand o vor folosi altii, e obligatoriu sa te asiguri de acuratetea informatiei pe care o preiei. Considerand, ca exemplu, cazul transferului datelor dintr-un formular in baza de date: undeva la 90% din cod (si implicit si din timpul de analiza, proiectare, etc) il ocupa sau ar trebui sa-l ocupe validarea datelor. Si asta se face, functie de complexitatea formularului, in zeci sau chiar sute de linii de cod, pe cand scrierea in baza de date se face in cateva linii.
(asta asa ca n-am vazut nici o validare pe acolo ... da, stiu, era doar un exemplu.. dar totusi :) )

Un alt exemplu de amanunt la care trebuie sa fii atent (la care nu voi comenta prea mult pentru ca sunt chestii de care nu am habar, eu folosind VB-ul): vad ca pentru TextBox ai 2 proprietati pe care le folosesti pentru a prelua valoarea: .Value si .Text. Ar trebui sa stii foarte bine si exact cum lucreaza fiecare pentru ca nu stiu daca sunt perfect identice.

In fine ... cred ca ajunge pentru astazi :)
Bafta la studiu!

#25
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
textbox1 = textbox2.text + textbox3.text (face concatenare)
textbox1 = textbox2.value + textbox3.value (face tot concatenare)

In proprietatile textboxului daca modific valoarea la text se modifica si la value automat si viceversa.

De aici trag eu concluzia ca atat .text cat si .value lucreaza la fel.

pentru a face operatia matematica de adunare trebuie scris

textbox1 = val(textbox2) + val(textbox3)

Uite ce nu am inteles eu din codul tau.

de ce ai folosit CInt (ala e pentru rotunjire ori in cazul nostru nu ii vad rostul, sau poate nu inteleg eu)
ce rol are semnul $ ?? am vazut ca l'ai folosit  "CInt(Left$(strInputValue, 2))"

#26
Sorin Nedelcu

Sorin Nedelcu

    Member

  • Grup: Members
  • Posts: 638
  • Înscris: 15.10.2006

 credit, on 18th November 2010, 17:24, said:

textbox1 = textbox2.text + textbox3.text (face concatenare)
textbox1 = textbox2.value + textbox3.value (face tot concatenare)

Proprietatea .text intoarce o valoare de tip string de aceea concateneaza.

E corect sa creezi o functie care face operatiunile matematice e mai simplu si eviti alte probleme.

In alta ordine de idei Cint() este pentru conversie catre integer si nu pentru rotunjire adica Round().

Left$=intoarce n caractere dintr-un string ,de regula $ este simbolul pentru var. de tip string.
Exista si LEFT simplu in VBA care face acelasi lucru.

#27
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006
1. .text vs .value - nu stiu si sincer nici nu am timp si chef sa ma apuc sa caut despre. (nu folosec vba, iar in vb nu ai .value)

2. CInt (CLng, CSng, CDbl ..) - conversie de la string la valorile numerice: Integer (Long, Single ..).

3. Left si Left$ (de asemenea lista e lunga ..right, mid, trim, replace ..).
Prima returneaza un Variant cu subtipul string (daca vrei, un variant care contine o valoare de tipul string). Cea de-a doua direct string. Cel putin asa se spune. De asemenea multi recomanda ca atunci cand lucrezi cu string-uri sa mergi pe varianta cu $.

(uitasem)
4.
The + Operator (Visual Basic) has the primary purpose of adding two numbers. However, it can also concatenate numeric operands with string operands. The + operator has a complex set of rules that determine whether to add, concatenate, signal a compiler error, or throw a run-time InvalidCastException exception.

The & Operator (Visual Basic) is defined only for String operands, and it always widens its operands to String, regardless of the setting of Option Strict. The & operator is recommended for string concatenation because it is defined exclusively for strings and reduces your chances of generating an unintended conversion.

Ca regula, e foarte indicat sa folosesti operanzii si operatorii specifici fiecarei operatii: & - concatenare, + - adunare. Cum iti spuneam anterior: VB-ul iti cam da voie sa "aduni" mere cu pere:
"a" + 1 = "a1". Merge, dar nu e indicat.

SA incerci si exemplul dat anterior
dim strValue as string
dim intValue as integer
strValue="2"
intValue=3
strValue=strValue + intValue

msgbox strValue 

strValue=strValue & intValue

msgbox strValue
ce afiseaza?

Edited by bgMiKe, 18 November 2010 - 18:01.


#28
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
Am atasat codul pentru un buton. La prima apasare de buton afiseaza msgbox gol la a doua apasare afiseaza suma (pentru primul caz)
Pentru cazul al doilea la prima apasare de buton idem cazul 1. la a doua apasare afiseaza concatenarea.

Eu ma gandeam ca nu o sa afiseze nimic pentru ca pentru prima variabila ai pus valoare text "" si pentru a doua variabila ai pus valoare numerica.
Ce ai scris tu acolo nu este totuna cu .text si .value Aici merge fara nici o treaba ori cu una ori cu alta.

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate