Si a fost Imagine Cup 2011


Dupa cum deja s-a aflat nu am prins podium la ITChallenge. As putea spune ca am fost pe locul 4 :), doar pentru ca nu se spun locurile 4-6 :).

As putea spune ca sunt putin dezamagit de mine, dar nu foarte mult, sper dupa cateva beri sa imi treaba si sa sterg aceste randuri, dar sunt si foarte mandru de mine cand stau si ma gandesc de unde am plecat si unde am ajuns intr-un an de zile. Sunt dovada vie ca intr-un an se poate ajunge departe, chiar in New York :)) si ca se poate, cu vointa se poate. Sa vedem in 2, oare unde ajung (Sydney poate?).

In zilele urmatoare voi mai continua cu povesti despre Imagine Cup, IT Challenge in special, cum a fost la New York, impresii, depresii, si altele.

Este o competitie hard, cine zice, sau gandeste, wtf, trebuia sa puna cateva servere, un office, cateva produse Microsoft si gata e pe aratura rau si ma pot lipsi de asa cititori.

O idee cam despre ce trebuia facut gasiti pe blog-ul lui Valy Greavu, a transmis live din finala.

Am facut multe greseli, care de abia dupa 2 zile de concurs realizez de ele.

Cea mai mare greseala: nu am cerut toate inregistrarile DNS (si erau o groaza). Erau tool-uri speciale care ziceau exact ce inregistrari sa cer, dar datorita stress-ului nu am avut rabdare sa urmez pasii care trebuiau urmati.

A doua (cred fatala): am avut o eroare grosolana la instalare de FEP (Forefront EndPoint Protection)  peste System Center Configuration Manager R3 si nu a mers antivirusul. FEP-ul l-am instalat de cel putin 3-4 ori inainte sa particip la finala, deci te poti astepta si la surprize de la o finala.

A treia: Am crezut ca daca nu stiu ceva o sa am timp sa ma uit pe net (google, bing, technet, sau altele). Ei bine, acest timp nu prea exista decat sa il folosesti ca un guideline, sa nu pierzi firul sau pentru erori minore.

Avantaje din aceasta competitie:

– o super experienta, e ceva ce nu o sa o uit toata viata

– cunosti multe persoane din diferite colturi ale lumii

– vezi trendul microsoft

– 1 saptamana la Marriot Hotel din buricul New York-ului

– 1 XBOX Kinect

– multe alte chestii (tricouri, sapci, stick, geanta, Yearbook, etc)

– 1 telefon cu Windows Phone (ultimul model, vine prin septembrie am inteles)

Nu intrebati de dezavantaje ca nu exista asa ceva.

Deci, de pe 15 iulie incep inregistrarile pentru Imagine Cup 2012 Australia. Sper sa am o concurenta cel putin cum am avut in acest an, sa fim multi sa avem din nou un finalist roman.

Multumesc mult tuturor persoanelor care m-au sustinut, incurajat, ascultat si mai ales au crezut in mine.

Sorry ca nu am putut continua traditia, iar cel mai mare regret al meu este ca nu am reusit sa iau o „pasare”.

Urmeaza poze, stiu ca asta asteptati cu totii, vor veni sambata, majoritatea pe blog (voi face sectiune separata), cateva pe facebook.

Finalist Imagine Cup, sectiunea IT Challenge


Am facut-o si pe asta, in iulie voi pleca la New York 6 zile pentru finala ITChallenge 2011. Probabil multi nu ma credeau in stare, dar … Nu era pacat ca aceasta frumoasa competitie sa nu aiba un participant roman in finala nici in acest an.

–––––*

IT Challenge:
Ţări calificate: China, France, Germany, Poland, Singapore
Romania este reprezentată de Ionut Sinescu de la Universitatea Alexandru Ioan Cuza din Iaşi.

Project Description: This proposal establishes a technological infrastructure for a foundation to support its grant funding process, based on Microsoft technologies.

La IT Challenge nu am făcut pauză decât în 2010. Suntem printre ţările cele mai titrate în această secţiune. Să vedem lista premiilor:

  • 2005, Japonia, Locul 2 – Emanuel Pentescu
  • 2006, India, Locul 2 – Valy Greavu (dica eu :) )
  • 2007, Corea de Sud, Locul 3 – Cosmin Ilie
  • 2008, Franţa, Locul 2 – Cosmin Ilie
  • 2009, Egipt, Locul 1Cosmin Ilie

*Valy Greavu’s Live Blog

Ii felicit si pe ceilalti participanti care, cu siguranta au facut un punctaj bun (speram ca o sa aflam si punctajul, exista si un pariu care trebuie respectat): Alexandru (Bucuresti), Andrei, Natalia, Wasea, mai este o persoana de la Cluj, de care nu stiu foarte multe.

Clasamentul International a fost cam asa (cred ca este in ordine alfabetica, nu stiu exact pe ce loc am fost) ** Extras de pe site-ul oficial

Ce trebuie sa fac in finala, o intrebare care o primesc din ce in ce mai des:

This lab will challenge you to build servers, server images, and configurations on a Hyper-V host server to prove your practical knowledge and experience with the technologies.  You will be asked to setup, install, and demonstrate knowledge and expertise around Windows 2008 R2, Exchange 2010, Windows 7, Office 2010, System Center Configuration Manager 2007 R2, System Center Operations Manager 2007 R2, TMG 2010, SQL 2008 R2, Office Communications Server 2007 R2, etc. You will be given 24 hours to complete the hands-on lab challenge

Mai multe detalii despre competitie:

http://www.imaginecup.com/competitions/it-challenge

http://valygreavu.wordpress.com/2011/05/23/imagine-cup-2011-finalistiiimaginecup/ –  daca navigati un pic pe acest blog, va veti face o idee despre ce e vorba, asta in caz ca nu stiati.

http://www.imaginecup.com/worldwide-finals/2011-finalists-winners

Stiri proaspete despre evolutia mea in competitie cu siguranta veti afla de pe blogul lui Valy Greavu (probabil chiar live).

Update: a venit cu dedicatie, si nu ma pot abtine sa nu fac share :))

Kit de Instalare in Visual Studio


Kitul de instalare pentru diferite aplicatii, mici sau mari de tip desktop se poate face prin 4 moduri in Visual Studio 2008 (probabil sunt mai multe, eu de atatea stiu deocamdata).

1. Deploy la proiect si se copie fisierul de deploy din %Project_path%”\bin\Debug\%project_name.exe%. Poti apela la aceasta varianta cand ai un proiect mic care nu implica baze de date sau alte fisiere la care trebuie facut deploy o data cu aplicatia.

2. Publish din Visual Studio. Meniul Build, optiunea Publish.

3. Crearea kit-ului cu un tool extern gen IStool. Mi se pare ultima solutie la care eu as apela, dar totusi exista si trebuie sa stim de ea. Daca va intereseaza acest tool puteti incepe documentarea de aici.

4. Kit de instalare cu un project de tip „Setup and Deployment”. Aceasta optiune o folosesc eu si cred, ca este cea mai buna, complexa si usor de realizat dupa ce ai creat corespunzator projectul. In acest project poti sa adaugi fisiere , sa adaugi anumite dll-uri, baza de date daca este una portabila gen Office Access (poti chiar si un Sql Server sau Oracle dar e mai mult de munca) creare foldere, uninstaller, deploy la alte aplicatii prerechizite gen Crystal Reports, daca ai si rapoarte prin aplicatie.

Chiar daca exemplu este pe Visual Studio 2008 presupun ca exista si in 2010, probabil mult imbunatatit.

Kit de Instalare pas cu pas

1. In aceeasi solutie (proiectul Principal) cu aplicatia se adauga un nou proiect.

2. Se selecteaza Setup Project

3. Se adauga fisierul de output pentru proiectul pentru care vrem sa realizam kit-ul.

4. Dupa ce s-a realizat conexiunea intre proiecte, in Application Folder s-au tras din proiect toate fisierele necesare pentru kit-ul dorit.

5. De acum se manipuleaza proiectul cum va fi deployat. Se adauga shortcut-uri in diferite locatii de unde se doreste sa se deschisa aplicatia, foldere, fisiere dependente, etc.

6. Interfata de instalare

In pagina deschisa se modifica pasii, si paginile din procedura de instalare.

7. Dupa ce s-a finalizat configurarea fara erori se face build la Project. Click dreapta pe project. Asta e tot ce se face si cand se modifica ceva in proiect la nivel de cod, pur si simplu se face Build si kit-ul e gata de distributie.

 8. Executabilul se gaseste in %Kit_project_name%\Debug\

Obs.: Fisierul executabil se copie impreuna cu fisierul .msi sau se copie doar fisierul .msi pentru a fi distribuit.

Fix Registry in Windows XP


Mai exact, daca va loviti de problema faimosului ecran albastru de la Microsoft cu eroare de genul:

  • nu poate citi registry
  • Registri corupti,

sau erori de genul:

  • Windows could not start because the following file is missing or corrupt:
    \WINDOWS\SYSTEM32\CONFIG\SYSTEM
  • Windows NT could not start because the below file is missing or corrupt:
    C:\WINNT\System32\\Ntoskrnl.exe
  • Windows NT could not start because the below file is missing or corrupt:
    C:\\WINNT\System32\HAL.dll
  • Invalid boot.ini
    Press any key to restart
  • NTLDR is Missing
    Press any key to restart

etc,

trebuie sa urmati 8 pasi pentru rezolvarea problemei.

Pasul 1: Bootati cu Cd-ul de Windows si instrari in Recovery Console (apasati R cand va intreaba daca vreti sa reparati sistemul de operare (binenteles ca zice in engleza si e posibil sa nu fi reprodus corect, dar e ceva de genul))

Pasul 2: Tastati cd c:\

Pasul 3: Se modifica atribute din fisierul de initializare (boot.ini) cu urmatoarele comenzi:

C:\ ATTRIB -H C:\\boot.ini
C:\ ATTRIB -S C:\\boot.ini
C:\ ATTRIB -R C:\\boot.ini

Pasul 4:  Se sterge fisierul de initializare

C:\ del boot.ini

Pasul 5: Se face rebuild la fisierele de System

C:\ BOOTCFG /Rebuild

Pasul 6: Se verifica integritatea hard disk-ului (aici poate dura ceva timp, in functie de marimea hdd-ului si daca are sectoare avariate sau nu)

C:\ CHKDSK /R /F

Pasul 7: Se reface fisierul de initializare

C:\ FIXBOOT

Pasul 8: Exit din recovery console, restart la pc

C:\ EXIT

Articolul original in gasiti la adresa:

http://www.instant-registry-fixes.org/eight-commands-to-registry-clean-xp-systems/

Antivirusul meu ma avetizeaza ca sunt virusi pe aceasta pagina, deci nu recomand sa intrati decat daca sunteti foarte curiosi, ce zice in plus fata de ce am scris eu.

Cu toate astea solutia merge, este testat.

Export Dinamic in Excel dintr-un formular .Net


    Ce inseamna asta?

    Un formular care prin anumiti parametri (un Combo conectat la o baza de date si un Buton) poate scrie un rand in Excel. De fiecare data cand se apasa Buton-ul, se adauga o alta linie in functie de valoarea selectata in Combo. 

    Fisierul se salveaza pe zile, daca s-a depasit ziua curenta se creaza un alt document si o ia de la inceput.

   Pentru a nu incarca aplicatia cu mult cod pentru formatarea fisierului Excel, am recurs la varianta de a crea un Template si il apelez din cod. Template-ul se creaza realizand fisierul Excel in formatul dorit si salvat template (.xlt)

Demo

 
  
Code Snippet

Codul este cat de cat comentat, sper sa intelegeti.

  1. Try
  2.             Dim connexiune As New OleDb.OleDbConnection
  3.             ‘conexiunea cu baza de date
  4.             connexiune.ConnectionString = „Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Certificate Distrugere\Certificare distrugere.mdb”
  5.             ‘se declara o comanda
  6.             Dim comand As New OleDb.OleDbCommand()
  7.             Dim reader As OleDb.OleDbDataReader
  8.  
  9.             connexiune.Open()
  10.             comand.CommandText = „SELECT CD_clienti_auto.*, CD_voucher_radiere.*” & _
  11.             „FROM CD_clienti_auto INNER JOIN CD_voucher_radiere ON CD_clienti_auto.NrCrt = CD_voucher_radiere.NrCrt ” & _
  12.             „WHERE CD_clienti_auto.NrCrt =” & cmbnume.SelectedValue & „;”
  13.  
  14.             comand.Connection = connexiune
  15.  
  16.             Dim excel_app As Excel.Application
  17.             ‘Dim wkbook As Excel.Workbook
  18.             ‘ Dim wksheet As Excel.Worksheet
  19.  
  20.  
  21.             ‘se declara linia in excel
  22.             Dim row As Integer
  23.  
  24.  
  25.  
  26.             ‘”D:\Certificate Distrugere\lista.xlt „)
  27.  
  28.             excel_app = CreateObject(„Excel.Application”)
  29.             excel_app.Visible = False
  30.  
  31.             ‘declararea path =ului catre fisierul template din pc
  32.             Dim strfile As String
  33.             strfile = „D:\Certificate Distrugere\Certificate Distrugere\” & Format(Now, „short date”).ToString & „.xls”
  34.  
  35.             ‘Incepe citirea din baza de date
  36.             reader = comand.ExecuteReader
  37.  
  38.             If reader.Read = True Then
  39.  
  40.                 ‘fisierul se salveaza pe zile. Daca trece ziua, se creaza alt fisier
  41.                 ‘verifica faca exista fisierul salvat, se adauga o linie noua
  42.  
  43.                 If File.Exists(strfile) Then
  44.                     ‘se deschide fisierul
  45.                     excel_app.Workbooks.Add(strfile)
  46.                     ‘se face insert in excel
  47.                     ‘MessageBox.Show(reader.Item(„CD_clienti_auto.Numeprenume”) & ”  sau ” & reader.Item(„numeprenume”))
  48.                     With excel_app
  49.                         row = .Range(„A65536”).End(Excel.XlDirection.xlUp).Row
  50.  
  51.                         row = row + 1
  52.                         .Range(„A” & Format$(row)).Select()
  53.                         .ActiveCell.FormulaR1C1 = reader.Item(„CD_clienti_auto.NrCrt”)
  54.                         .Range(„B” & Format$(row)).Select()
  55.                         .ActiveCell.FormulaR1C1 = reader.Item(„Numeprenume”)
  56.                         .Range(„C” & Format$(row)).Select()
  57.                         .ActiveCell.FormulaR1C1 = reader.Item(„cnp”)
  58.                         .Range(„D” & Format$(row)).Select()
  59.                         .ActiveCell.FormulaR1C1 = reader.Item(„telfixmob”)
  60.                         .Range(„E” & Format$(row)).Select()
  61.                         .ActiveCell.FormulaR1C1 = reader.Item(„email”)
  62.                         .Range(„F” & Format$(row)).Select()
  63.                         .ActiveCell.FormulaR1C1 = reader.Item(„categorie”)
  64.                         .Range(„G” & Format$(row)).Select()
  65.                         .ActiveCell.FormulaR1C1 = reader.Item(„marca”)
  66.                         .Range(„H” & Format$(row)).Select()
  67.                         .ActiveCell.FormulaR1C1 = reader.Item(„tip”)
  68.                         .Range(„I” & Format$(row)).Select()
  69.                         .ActiveCell.FormulaR1C1 = reader.Item(„an_fabricatie”)
  70.                         .Range(„J” & Format$(row)).Select()
  71.                         .ActiveCell.FormulaR1C1 = reader.Item(„an_prima_inmatriculare”)
  72.                         .Range(„K” & Format$(row)).Select()
  73.                         .ActiveCell.FormulaR1C1 = reader.Item(„ult_nr_inmatriculare”)
  74.                         .Range(„L” & Format$(row)).Select()
  75.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_identificare”)
  76.                         .Range(„M” & Format$(row)).Select()
  77.                         .ActiveCell.FormulaR1C1 = reader.Item(„serie_motor”)
  78.                         .Range(„N” & Format$(row)).Select()
  79.                         .ActiveCell.FormulaR1C1 = reader.Item(„capacitate_cilindrica”)
  80.                         .Range(„O” & Format$(row)).Select()
  81.                         .ActiveCell.FormulaR1C1 = reader.Item(„greutate”)
  82.                         .Range(„P” & Format$(row)).Select()
  83.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_seria_cert_inmatriculare”)
  84.                         .Range(„Q” & Format$(row)).Select()
  85.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_seria”)
  86.                         .Range(„R” & Format$(row)).Select()
  87.                         .ActiveCell.FormulaR1C1 = reader.Item(„CD_clienti_auto.nrcrt”)
  88.                         .Range(„S” & Format$(row)).Select()
  89.                         .ActiveCell.FormulaR1C1 = reader.Item(„dataprocesverb”)
  90.                         .Range(„T” & Format$(row)).Select()
  91.                         .ActiveCell.FormulaR1C1 = reader.Item(„nremitentatfisc”)
  92.                         .Range(„U” & Format$(row)).Select()
  93.                         .ActiveCell.FormulaR1C1 = reader.Item(„emitentatfisc”)
  94.                         .Range(„V” & Format$(row)).Select()
  95.                         .ActiveCell.FormulaR1C1 = reader.Item(„serie_ticket_valoric”)
  96.                         .Range(„W” & Format$(row)).Select()
  97.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_ticket_valoric”)
  98.                         .Range(„X” & Format$(row)).Select()
  99.                         .ActiveCell.FormulaR1C1 = „Onu Vasile”
  100.                         .Range(„Y” & Format$(row)).Select()
  101.                         .ActiveCell.FormulaR1C1 = Format(Now, „short date”).ToString
  102.  
  103.  
  104.                         ”se opresc alertele, se salveaza
  105.                         .Application.DisplayAlerts = False
  106.                         .ActiveWorkbook.SaveAs(strfile)
  107.  
  108.                     End With
  109.                     ‘MsgBox(„FLAG1”)
  110.  
  111.  
  112.                     ‘daca fisierul nu exista in ziua curenta, se creaza un nou fisier si se adauga o noua linie
  113.                     ‘linia se adauga dintr-un template si se salveaza in locatia specificata
  114.                 Else
  115.                     ‘ Create a new spreadsheet.
  116.                     excel_app.Workbooks.Add(„D:\Certificate Distrugere\lista.xlt”)
  117.                     ‘MessageBox.Show(reader.Item(„Numeprenume”))
  118.  
  119.                     ‘ Insert data into Excel.
  120.                     With excel_app
  121.  
  122.                         row = .Range(„A65536”).End(Excel.XlDirection.xlUp).Row
  123.  
  124.                         ‘.Columns(„A:A”).ColumnWidth = 35
  125.  
  126.                         ‘.Columns(„B:B”).ColumnWidth = 13
  127.                         row = row + 1
  128.                         .Range(„A” & Format$(row)).Select()
  129.                         .ActiveCell.FormulaR1C1 = reader.Item(„CD_clienti_auto.NrCrt”)
  130.                         .Range(„B” & Format$(row)).Select()
  131.                         .ActiveCell.FormulaR1C1 = reader.Item(„Numeprenume”)
  132.                         .Range(„C” & Format$(row)).Select()
  133.                         .ActiveCell.FormulaR1C1 = reader.Item(„cnp”)
  134.                         .Range(„D” & Format$(row)).Select()
  135.                         .ActiveCell.FormulaR1C1 = reader.Item(„telfixmob”)
  136.                         .Range(„E” & Format$(row)).Select()
  137.                         .ActiveCell.FormulaR1C1 = reader.Item(„email”)
  138.                         .Range(„F” & Format$(row)).Select()
  139.                         .ActiveCell.FormulaR1C1 = reader.Item(„categorie”)
  140.                         .Range(„G” & Format$(row)).Select()
  141.                         .ActiveCell.FormulaR1C1 = reader.Item(„marca”)
  142.                         .Range(„H” & Format$(row)).Select()
  143.                         .ActiveCell.FormulaR1C1 = reader.Item(„tip”)
  144.                         .Range(„I” & Format$(row)).Select()
  145.                         .ActiveCell.FormulaR1C1 = reader.Item(„an_fabricatie”)
  146.                         .Range(„J” & Format$(row)).Select()
  147.                         .ActiveCell.FormulaR1C1 = reader.Item(„an_prima_inmatriculare”)
  148.                         .Range(„K” & Format$(row)).Select()
  149.                         .ActiveCell.FormulaR1C1 = reader.Item(„ult_nr_inmatriculare”)
  150.                         .Range(„L” & Format$(row)).Select()
  151.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_identificare”)
  152.                         .Range(„M” & Format$(row)).Select()
  153.                         .ActiveCell.FormulaR1C1 = reader.Item(„serie_motor”)
  154.                         .Range(„N” & Format$(row)).Select()
  155.                         .ActiveCell.FormulaR1C1 = reader.Item(„capacitate_cilindrica”)
  156.                         .Range(„O” & Format$(row)).Select()
  157.                         .ActiveCell.FormulaR1C1 = reader.Item(„greutate”)
  158.                         .Range(„P” & Format$(row)).Select()
  159.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_seria_cert_inmatriculare”)
  160.                         .Range(„Q” & Format$(row)).Select()
  161.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_seria”)
  162.                         .Range(„R” & Format$(row)).Select()
  163.                         .ActiveCell.FormulaR1C1 = reader.Item(„CD_clienti_auto.nrcrt”)
  164.                         .Range(„S” & Format$(row)).Select()
  165.                         .ActiveCell.FormulaR1C1 = reader.Item(„dataprocesverb”)
  166.                         .Range(„T” & Format$(row)).Select()
  167.                         .ActiveCell.FormulaR1C1 = reader.Item(„nremitentatfisc”)
  168.                         .Range(„U” & Format$(row)).Select()
  169.                         .ActiveCell.FormulaR1C1 = reader.Item(„emitentatfisc”)
  170.                         .Range(„V” & Format$(row)).Select()
  171.                         .ActiveCell.FormulaR1C1 = reader.Item(„serie_ticket_valoric”)
  172.                         .Range(„W” & Format$(row)).Select()
  173.                         .ActiveCell.FormulaR1C1 = reader.Item(„nr_ticket_valoric”)
  174.                         .Range(„X” & Format$(row)).Select()
  175.                         .ActiveCell.FormulaR1C1 = „Onu Vasile”
  176.                         .Range(„Y” & Format$(row)).Select()
  177.                         .ActiveCell.FormulaR1C1 = Format(Now, „short date”).ToString
  178.  
  179.                         ‘MsgBox(„FLAG2”)
  180.                         ‘ Save the results.
  181.  
  182.                         ‘se salveaza in path general
  183.                         .ActiveWorkbook.SaveAs(strfile)
  184.                     End With
  185.  
  186.  
  187.                 End If
  188.  
  189.                 ‘ Close the workbook
  190.                 excel_app.ActiveWorkbook.Close()
  191.  
  192.                 ‘ Close Excel.
  193.                 excel_app.Quit()
  194.                 ‘ excel_app = Nothing
  195.  
  196.  
  197.  
  198.             End If
  199.  
  200.             reader.Close()
  201.  
  202.  
  203.             connexiune.Close()
  204.             MessageBox.Show(„S-a realizat cu succes exportul!”, „Success”, MessageBoxButtons.OK, MessageBoxIcon.Information)
  205.  
  206.             ‘MsgBox(„Ok”)
  207.  
  208.         Catch except As Exception
  209.  
  210.             MessageBox.Show(„Probleme la export in Excel. Este ceva important, contacteaza de urgenta Administratorul ” & except.Message, „Eroare”, MessageBoxButtons.OK, MessageBoxIcon.Error)
  211.  
  212.  
  213.         End Try

 

PS: Codul mai poate fi optimizat, dar cand l-am creat eram focusat pe rezultate, nu pe performanta.

Aplicatie pentru Programul Rabla 2011


Dupa o saptamana fulger am terminat si acest mic task.

Dupa 30 martie voi publica si bucatele de cod care mi s-au parut mai interesante si ar mai putea fi de folos si altora.

Exemplu:

1. Cum sa exporti intr-un template Word anumite informatii dintr-un formular .NET

2. Cum sa scrii cate o linie in Excel de fiecare data cand ai nevoie sa mai adaugi o persoana. 

3. Cum sa salvezi un fisier Excel pe zile, sau pe ore, sau cu anumite denumiri.

4. Cum sa faci un filtru sa iti apara in aplicatie doar persoanele care sunt in workflow (inca nu au terminat cu birocratia).

5. Cum sa faci un raport final, formatat dupa un anumit template Excel.

si multe altele

Deocamdata doar vizualizati acest mic demo, foarte prost filmat, pe un calculator care ar trebui sa ajunga si el la remat :)) Aplicatia este mult mai functionala decat pare.

Problema rezolvata: refresh datagrid in VB, la insert in real time


Nu cred ca titlul este prea explicit.

Problema era in felul urmator.
Am sincronizat datagrid-ul si textbox-urile cu un Dataset, era exact ce imi trebuia.

Butonul Adauga = curata databind-ul si elibereaza textbox-urile

Butonul Salveaza = face un insert parametrizat in baza de date, dar nu cu ajutorul dataset-ului ci direct printr-o conexiune deschisa cu baza de date.

Problema a aparut la sincronizarea DataGrid-ului. Acesta nu voia sa faca refresh (fill) cu noile inregistrari pana nu inchideam si deschideam aplicatia. Naspa.

Am cautat solutii:

pe net:  google nu prea m-a ajutat de data asta, sunt dejamagit. Am gasit si cateva articole pe forum-uri care explica exact problema, care era identica cu a mea, fara un rapsuns clar. Unul dintre ele este:

http://www.vbforums.com/showthread.php?t=635307

pe la colegi: nu am facut pe nimeni sa inteleaga exact cauza problemei, am primit niste sfaturi pe care le-am urmat, dar fara nici un rezultat.

Formularul:

 Sa repet, dupa insert, valorile inserate nu apareau in datagrid pana nu inchideam si deschideam aplicatia.

Chiar am facut un compromis sa fac insert-ul cu ajutorul datase-ului, dar greseala era deja facuta, si nu a mers.

Solutia: Solutia nu am gasit-o nicaieri, dupa 4 ore de gandit am gasit-o singur.

Problema a intervenit la datasource-ul dataset-ului. Nu inteleg de ce, cand am dat in wizard sa creez sursa mi-a facut string-ul de conectare ceva de genul:

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="|Data Directory|\Certificare distrugere.mdb""

 Am inlocuit |Data Directory| cu calea catre baza de date.

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\OMT Certificate Distrugere VSU\OMT Certificate Distrugere VSU\Certificare distrugere.mdb""

Aceast connectionstring care trebuie modificat il gasiti in fisierul app.config.

Acum toate bune si frumoase, pot trece linistit la customizare, aspect comercial si alte facilitati care le va oferi aplicatia.

PS: Foarte mare atentie cand se impacheteaza aplicatia, trebuie sa se schimbe path-ul catre locatia unde va fi baza de date dupa deploy (instalare). Ala era si rolul Data Directory…

PS2: Acest articol pentru cei care sunt prima oara pe aici face parte din dezvoltarea unei aplicatii pentru un centru Remat, pentru programul Rabla 2011.

 PS3: Daca cineva intampina problema aceasta si totusi nu pricepe din ce am scris cum se rezolva problema, ajut cu cea mai mare placere, sa nu mai piarda nimeni 4 ore.