Jump to content

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

probleme mașina de spalat rufe

Magazine care vand bere la keg

Proiect ciudat legat de metaverse...
 Daniel Fenechiu: Nu vom aște...

Transfer in acelasi pc cu FTP

Și daca industria europeana ...

Alimentare camera ip distanta 50m
 Nelamurire instalare internet

Cheie licenta Windows11

Sfat plantare arbori pentru o mic...

rachiu din gemuri si dulceturi
 Bara de cautare sa o mut jos?

Accesorii multitool Black and Dec...

Suma maxima.

Pilonul II - date de piata, tendi...
 

validare cod de inregistrare (CUI)

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

#1
zane

zane

    Junior Member

  • Grup: Members
  • Posts: 62
  • Înscris: 30.01.2007
salut pentru toti!

am o problema de genul: care este solutia cea mai rapida pt verificarea daca un cod, de genul CUI (cod unic de inregistrare) mai este in tabel. As vrea sa fac acest lucru la procedura LostFocus a txtbox-ului unde se introduce acest cod.

Eu m-am gandit ca la pierderea focusului sa interoghez campul daca mai exista un cod asemanator

Aveti o alta idee?
Va multumesc

#2
gabirds

gabirds

    Junior Member

  • Grup: Members
  • Posts: 129
  • Înscris: 09.10.2006

 zane, on 15th May 2010, 19:26, said:

salut pentru toti!

am o problema de genul: care este solutia cea mai rapida pt verificarea daca un cod, de genul CUI (cod unic de inregistrare) mai este in tabel. As vrea sa fac acest lucru la procedura LostFocus a txtbox-ului unde se introduce acest cod.

Eu m-am gandit ca la pierderea focusului sa interoghez campul daca mai exista un cod asemanator

Aveti o alta idee?
Va multumesc

ciao!

ai aicidescris algoritmul de verificare al unui cod CUI

aici functia de verificare:

Public Function IsValidCIF(CiF As String) As Boolean

IsValidCIF = False
Dim i As Integer
On Error GoTo Eroare

         '****************************************
        'Pas preliminar: Se testeaza daca codul respecta formatul unui cod CIF.
        'Adica lungimea maxima sa fie de 10 cifre si sa contina doar caractere numerice.

        If IsNull(CiF) = True Or IsEmpty(CiF) Or CiF = "" Then
            IsValidCIF = False
            Exit Function
        End If
        
        CiF = Replace(CiF, " ", "")
        
        '****************************************
        If Len(CiF) < 2 Then
            IsValidCIF = False
            Exit Function
        End If
                    
        '****************************************
        '- elimin caracterele de inceput RO sau altceva
        
        For i = 0 To Len(CiF) - 1
            If IsNumeric(Mid(CiF, i + 1, 1)) Then
            CiF = Mid(CiF, i + 1)
            GoTo sari
            End If
        Next i
sari:
         '****************************************
         '- verific fie maxim 10 caractere
        If Len(CiF) > 10 Then
           IsValidCIF = False
           Exit Function
        End If

      '****************************************
      'Pas 1: Se foloseste cheia de testare "753217532". Se inverseaza ordinea cifrelor codului
      'CIF precum si a cheii de testare.
      ' Array gata inversat
        
        Dim CheieTestare(8) As Integer
        
        CheieTestare(0) = 2
        CheieTestare(1) = 3
        CheieTestare(2) = 5
        CheieTestare(3) = 7
        CheieTestare(4) = 1
        CheieTestare(5) = 2
        CheieTestare(6) = 3
        CheieTestare(7) = 5
        CheieTestare(8) = 7
      
      
        '****************************************
        ' Array pentru CIF
        ' tot inversate
        
        Dim CIFArray(10)
    
        For i = 0 To Len(CiF) - 1
           CIFArray(i) = Mid(CiF, Len(CiF) - (i), 1)
        'MsgBox i & " -" & CIFArray(i)
        Next i



        'Pas 2: Se ignora prima cifra din codul CIF inversat (aceasta este cifra de control)
        'si se inmulteste fiecare cifra cu cifra corespunzatoare din cheia de testare inversata.

            Dim Total As Integer
            Total = 0
            
          For i = 1 To Len(CiF) - 1
          Total = Total + (CIFArray(i) * CheieTestare(i - 1))
          'MsgBox CIFArray(i) & " * " & CheieTestare(i - 1)
          Next i
            


        'Pas 3: Se aduna toate produsele obtinute. Suma rezultata se inmulteste cu 10 si
        'produsul este impartit la 11. Cifra obtinuta, in urma operatiei MODULO 11 reprezita
        'cifra de verificare. Daca in urma impartirii s-a obtinut restul 10 atunci
        'cifra de verificare va fi 0.



            Total = (Total * 10)
            
            Dim Rezultat As Integer
            Rezultat = Total Mod 11
            
            If Rezultat = 10 Then
            Rezultat = 0
            End If
            
            If Rezultat = CIFArray(0) Then
                IsValidCIF = True
            Else
                IsValidCIF = False
            End If
            
            
            
            Erase CIFArray
            Erase CheieTestare
            Exit Function
Eroare:
    IsValidCIF = False
End Function


chemi functia cu:
ValCiF = IsValidCIF(Worksheets(codul CIF)

returneaza true sau false

#3
zane

zane

    Junior Member

  • Grup: Members
  • Posts: 62
  • Înscris: 30.01.2007

 gabirds, on 8th June 2010, 18:55, said:

ciao!

ai aicidescris algoritmul de verificare al unui cod CUI

aici functia de verificare:

Public Function IsValidCIF(CiF As String) As Boolean

IsValidCIF = False
Dim i As Integer
On Error GoTo Eroare

         '****************************************
        'Pas preliminar: Se testeaza daca codul respecta formatul unui cod CIF.
        'Adica lungimea maxima sa fie de 10 cifre si sa contina doar caractere numerice.

        If IsNull(CiF) = True Or IsEmpty(CiF) Or CiF = "" Then
            IsValidCIF = False
            Exit Function
        End If
        
        CiF = Replace(CiF, " ", "")
        
        '****************************************
        If Len(CiF) < 2 Then
            IsValidCIF = False
            Exit Function
        End If
                    
        '****************************************
        '- elimin caracterele de inceput RO sau altceva
        
        For i = 0 To Len(CiF) - 1
            If IsNumeric(Mid(CiF, i + 1, 1)) Then
            CiF = Mid(CiF, i + 1)
            GoTo sari
            End If
        Next i
sari:
         '****************************************
         '- verific fie maxim 10 caractere
        If Len(CiF) > 10 Then
           IsValidCIF = False
           Exit Function
        End If

      '****************************************
      'Pas 1: Se foloseste cheia de testare "753217532". Se inverseaza ordinea cifrelor codului
      'CIF precum si a cheii de testare.
      ' Array gata inversat
        
        Dim CheieTestare(8) As Integer
        
        CheieTestare(0) = 2
        CheieTestare(1) = 3
        CheieTestare(2) = 5
        CheieTestare(3) = 7
        CheieTestare(4) = 1
        CheieTestare(5) = 2
        CheieTestare(6) = 3
        CheieTestare(7) = 5
        CheieTestare(8) = 7
      
      
        '****************************************
        ' Array pentru CIF
        ' tot inversate
        
        Dim CIFArray(10)
    
        For i = 0 To Len(CiF) - 1
           CIFArray(i) = Mid(CiF, Len(CiF) - (i), 1)
        'MsgBox i & " -" & CIFArray(i)
        Next i



        'Pas 2: Se ignora prima cifra din codul CIF inversat (aceasta este cifra de control)
        'si se inmulteste fiecare cifra cu cifra corespunzatoare din cheia de testare inversata.

            Dim Total As Integer
            Total = 0
            
          For i = 1 To Len(CiF) - 1
          Total = Total + (CIFArray(i) * CheieTestare(i - 1))
          'MsgBox CIFArray(i) & " * " & CheieTestare(i - 1)
          Next i
            


        'Pas 3: Se aduna toate produsele obtinute. Suma rezultata se inmulteste cu 10 si
        'produsul este impartit la 11. Cifra obtinuta, in urma operatiei MODULO 11 reprezita
        'cifra de verificare. Daca in urma impartirii s-a obtinut restul 10 atunci
        'cifra de verificare va fi 0.



            Total = (Total * 10)
            
            Dim Rezultat As Integer
            Rezultat = Total Mod 11
            
            If Rezultat = 10 Then
            Rezultat = 0
            End If
            
            If Rezultat = CIFArray(0) Then
                IsValidCIF = True
            Else
                IsValidCIF = False
            End If
            
            
            
            Erase CIFArray
            Erase CheieTestare
            Exit Function
Eroare:
    IsValidCIF = False
End Function


chemi functia cu:
ValCiF = IsValidCIF(Worksheets(codul CIF)

returneaza true sau false


Multumesc!!! Este  mai mult decat ma asteptam... :thumbup:

#4
zane

zane

    Junior Member

  • Grup: Members
  • Posts: 62
  • Înscris: 30.01.2007
...si totusi am o problema cu verificarea daca codul mai este introdus (practic firma respectiva este deja in baza de date).
Daca interoghez tabela pe lostfocus-ul (...am incercat si cu Validate) txtbox-ului, atunci cand introduc datele pt o firma noua este OK, dar daca "intru" pt modificarea datelor si, intamplator, utilizatorul pune cursorul in txtbox-ul unde este codul de inregistrare, orice tentativa de a parasi txtbox-ul imi verifica codul si FIRESTE este deja in baza de date si imi da mesajul de atentionare pus de mine (codul este in baza de date, bla, bla...).

Intrebare: Care este de fapt evenimentul in care se pune cod pt verificarea existentei unei dubluri si daca este corect ca acest lucru sa-l realizez prin interogarea
campului cod_unic_inregistrare si daca este dublat sa-mi afiseze un mesaj de atentionare.?

Multumesc anticipat!

#5
Alta_

Alta_

    Active Member

  • Grup: Members
  • Posts: 1,197
  • Înscris: 22.05.2007

 zane, on 23rd June 2010, 10:38, said:

...si totusi am o problema cu verificarea daca codul mai este introdus (practic firma respectiva este deja in baza de date).

Poate ar fi bine sa ai  pe forma (intr-o prima faza) doar camp de CUI + un buton de Verificare. Daca exista, faci locate pe respectivul CUI si aduci pe forma si celelalte campuri asociate firmei - in vederea actualizarii; daca nu exista, afisezi campurile goale in vederea inserarii.

Pe de alta parte, poti pune restrictia de unicitate pe campul CUI, la nivel de BD, sa nu-ti mai bati tu capul cu verificarea duplicatelor.

#6
zane

zane

    Junior Member

  • Grup: Members
  • Posts: 62
  • Înscris: 30.01.2007

 Alta_, on 23rd June 2010, 11:05, said:

Poate ar fi bine sa ai  pe forma (intr-o prima faza) doar camp de CUI + un buton de Verificare. Daca exista, faci locate pe respectivul CUI si aduci pe forma si celelalte campuri asociate firmei - in vederea actualizarii; daca nu exista, afisezi campurile goale in vederea inserarii.

Pe de alta parte, poti pune restrictia de unicitate pe campul CUI, la nivel de BD, sa nu-ti mai bati tu capul cu verificarea duplicatelor.

multumesc.
ok, fac campul unic din Access, in cazul meu, dar cum gestionez eroarea, pt ca banuiesc ca imi va da o eroare in cazul in care este duplicat.

#7
Alta_

Alta_

    Active Member

  • Grup: Members
  • Posts: 1,197
  • Înscris: 22.05.2007

Quote

Try the insert, then catch the error.

Nu ma pricep la Visual Basic, dar banuiesc ca exista o Exceptie/Error number  pentru "duplicate keys found".

Ceva gen:
On Error Goto Err_Handler
	'Do your stuff..
	 Exit Sub
Err_Handler:
   If Err.Number = "the error number for duplicated key" then
		MsgBox "that key is already in the database"
		Err.Clear
   End if

Edited by Alta_, 23 June 2010 - 12:13.


Anunturi

Bun venit pe Forumul Softpedia!

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