Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Trecerea de la un rand la altul intru-un datagridview
Last Updated: Jul 03 2014 11:52, Started by
bibicu2014
, Jun 25 2014 08:53
·
0
#1
Posted 25 June 2014 - 08:53
Salut !
Lucrez la o aplicatie in Vb.net 2010 ce foloseste o baza de date sql 2008. Stiu ca saltul intr-un datagridview de la o inregistrarea curenta la urmatoarea se face cu ajutorul instructiunii tabelabindingsource.movenext(). Cum pot face sa trec de la inregistrarea cu numar 1 la inregistrarea cu numarul 2800 intrun datagridview ce contine peste 75000 de inregistrari ? Multumesc ! |
#3
Posted 25 June 2014 - 09:58
_Smiley_, on 25 iunie 2014 - 09:06, said: M-am uitat pe adresa din link, dar nu inteleg cum trebuie sa fac in cazul meu . Mentionez ca sunt incepator in VB.net si orice ajutor este binevenit. Mare parte din timp am scris aplicatii in Visual Foxpro si acum incerc sa trec la VB.net. In Visual foxpro scriam "goto record 2800" si ma arunca pe inregistrarea cu numarul 2800 . In VB.net vad ca o chestie simpla se rezolva foarte greu. |
#4
Posted 25 June 2014 - 11:36
la descrierea proprietatii Position scrie asa:
Quote Gets or sets the index of the current item in the underlying list. tabelabindingsource.Position = 2800 |
#5
Posted 25 June 2014 - 12:04
#6
Posted 30 June 2014 - 18:02
Este posibil ca un form ce contine un datagridview ce afiseaza in jur de 20.000 de inregistrari si 5 coloane sa se incarce in 6-10 secunde ?
In tabel am creat cheie primara de tip int, am facut indexare la campul ce contine cheia primara, si am creat relatii cu celelalte tabele din baza de date. In Visual Foxpro acelasi form se incarca in 1 secunda. Este ceva ce imi scapa si nu stiu ce. Ma puteti ajuta cu niste sfaturi ? |
#7
Posted 30 June 2014 - 18:09
VFP nu incarca toate inregistarile, doar o pagina. Pe urma in functie de cum te mai plimbi pe acolo.
Nu stiu acum la gridul tau (vezi in documentatie) dar exista notiunea de virtual grid care incarca la fel, pe urma cu desenarea iarasi e un aspect, vezi unde se pierde timpul (la incarcare sau la executia pe server), tin minte ca daca ai un bindingsource merge mai greu ca un dataview etc. |
#8
Posted 30 June 2014 - 18:30
Ma gandesc cu groaza in cat timp se va incarca datagridview cu 100.000-500.000 inregistrari.
In SQl Server 2008 R2 afisarea inregistrarilor din tabel nu dureaza mai mult de 1 secunda . Problema este la afisarea din aplicatia facuta in VB.net 2010. De cateva zile caut o solutie pentru rezolvarea acestei probleme si bat pasul pe loc. |
#9
Posted 30 June 2014 - 18:33
Acum nu compara o tehnologie nativa cu una managed.
Maine poti sa-ti fac niste teste, intr-un proiect .NET la munca stiu ca s-a preferat implementarea unor DataTable custom in locul celor default tocmai pentru performante slable si mult cod balast (pentru noi) asociat in spate si care mananca si ala din resurse. Edited by neagu_laurentiu, 30 June 2014 - 18:34. |
#11
Posted 01 July 2014 - 20:44
cu greu poti gasi un motiv serios pentru a afisa 20k inregistrari. apeleaza la paginare, o sa-ti rezolve toate problemele.
|
#12
Posted 01 July 2014 - 20:46
Testeaza mai intai sa vezi unde-i pierderea de timp, mai jos dau niste monstre de cod in diferite variante:
DataTable t; SqlDataAdapter a; SqlConnection c; DataGridView g; DateTime t1, t2; c = new SqlConnection("Data Source=0.0.0.0\\InstantaSQL;Initial Catalog=tempdb;User ID=utilizator;Password=parola"); c.Open(); t = new DataTable(); a = new SqlDataAdapter("SELECT * FROM table", c); t1 = DateTime.Now; a.Fill(t); t2 = DateTime.Now; MessageBox.Show("DataTable:" + (t2 - t1).ToString()); t1 = DateTime.Now; g.DataSource = t; t2 = DateTime.Now; MessageBox.Show("GridView: " + (t2 - t1).ToString()); c.Close(); DataTable t; SqlDataAdapter a; DataView v; SqlConnection c; DataGridView g; DateTime t1, t2; c = new SqlConnection("Data Source=0.0.0.0\\InstantaSQL;Initial Catalog=tempdb;User ID=utilizator;Password=parola"); c.Open(); t = new DataTable(); a = new SqlDataAdapter("SELECT * FROM table", c); t1 = DateTime.Now; a.Fill(t); t2 = DateTime.Now; MessageBox.Show("DataTable:" + (t2 - t1).ToString()); t1 = DateTime.Now; v = new DataView(t); t2 = DateTime.Now; MessageBox.Show("DataView: " + (t2 - t1).ToString()); t1 = DateTime.Now; g.DataSource = v; t2 = DateTime.Now; MessageBox.Show("GridView: " + (t2 - t1).ToString()); c.Close(); DataTable t; SqlDataAdapter a; BindingSource b; SqlConnection c; DataGridView g; DateTime t1, t2; c = new SqlConnection("Data Source=0.0.0.0\\InstantaSQL;Initial Catalog=tempdb;User ID=utilizator;Password=parola"); c.Open(); t = new DataTable(); a = new SqlDataAdapter("SELECT * FROM table", c); t1 = DateTime.Now; a.Fill(t); t2 = DateTime.Now; MessageBox.Show("DataTable:" + (t2 - t1).ToString()); b = new BindingSource(); t1 = DateTime.Now; b.DataSource = t; t2 = DateTime.Now; MessageBox.Show("BindingSource: " + (t2 - t1).ToString()); t1 = DateTime.Now; g.DataSource = b; t2 = DateTime.Now; MessageBox.Show("GridView: " + (t2 - t1).ToString()); c.Close(); |
#13
Posted 01 July 2014 - 21:04
neagu_laurentiu, on 30 iunie 2014 - 18:33, said:
Maine poti sa-ti fac niste teste, intr-un proiect .NET la munca stiu ca s-a preferat implementarea unor DataTable custom in locul celor default tocmai pentru performante slable si mult cod balast (pentru noi) asociat in spate si care mananca si ala din resurse. Mai ramane valabil ? Ma poti ajuta cu niste teste daca iti trimit aplicatia ? |
#14
Posted 01 July 2014 - 21:11
Pune pe site intr-o arhiva dar maine cand am un server disponibil pot face testele. Dar pana atunci vezi tu conform cu ce ti-am dat mai sus (ca poate nu ai un profiler) unde s-ar pierde timpul.
|
#15
Posted 01 July 2014 - 21:33
|
#16
Posted 03 July 2014 - 11:52
Am creat si am folosit urmatoarea procedura stocata pe server : select * from pacienti where nume='popescu ion'
Problema este ca incarcarea datelor din tabela pacienti (nume, cnp, datanasterii, etc.) in form2 se face tot greu. Din aproape in aproape poate reusesc. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users