Visual Basic - datagrid



Zdravím. Potřeboval bych v programu ošetřit následující:  
  
- v okně programu je datagrid s daty, po dvojkliku myší na datagrid (řádek datagridu) se použijí data ze zvoleného řádku (tahle část je v pohodě)  
  
- potřebuju ale nějak ošetřit, aby pokud uživatel kliknul na záhlaví sloupců v datagridu, aby se maximálně sloupce abecedně seřadily atd., ale aby nedošlo k tomu, že se datagrid bude chovat, jako by uživatel kliknul na řádek s daty... V datagridu je vždy nějaký řádek označený jako vybraný. Zkoušel jsem to přes souřadnice buněk v datagridu, zkoušel jsem různé události ale jaksi bez konečného úspěchu. Nejjednodušší by bylo záhlaví datagridu schovat, nezobrazovat ho (to ale nechci). Možná řeším jednoduchou záležitost, díky za každou radu.
Pouzij jinej Event. Ted tam mas asi on click na celej grid. Tak pouzij neco vhodnejsiho (oncick na cell, nebo onclick na data v celu).
<p>ujistěte se, že na db, který chcete odebrat, nemáte závislosti, jako jsou databázové snímky. přesto by chybová zpráva vypadala jinak. jste si jisti, že k vaší databázi není žádný skrytý proces? dobrým přístupem by bylo spuštění skriptu, který zabije všechny relace a ihned po přejmenování databáze na jiné jméno a poté přetažení databáze.</p><p>vytvořte kurzor na základě tohoto výběru:</p><pre><code> select d.name , convert (smallint, req\_spid) as spid from master.dbo.syslockinfo l, master.dbo.spt\_values v, master.dbo.spt\_values x, master.dbo.spt\_values u, master.dbo.sysdatabases d where l.rsc\_type = v.number and v.type = 'lr' and l.req\_status = x.number and x.type = 'ls' and l.req\_mode + 1 = u.number and u.type = 'l' and l.rsc\_dbid = d.dbid and rsc\_dbid = (select top 1 dbid from master..sysdatabases where name like 'my\_db') </code></pre><p>vydání uvnitř kurzoru:</p><pre><code>set @kill\_process = 'kill ' + @spid exec master.dbo.sp\_executesql @kill\_process print 'killed spid : '+ @spid </code></pre><p>po uzavření kurzoru a uvolnění:</p><pre><code>sp\_dboption 'my\_db', 'single user', 'true' go sp\_renamedb 'my\_db', 'my\_db\_old' go drop database my\_db\_old </code></pre> <p>x11 má několik dostupných schránek. ve výchozím nastavení <code>xclip</code> umisťuje data do vyrovnávací paměti primárního výběru. chcete-li jej vložit, použijte prostřední kliknutí.</p><p>pokud chcete použít <kbd>ctrl</kbd>+<kbd>v</kbd>, použijte <code>xclip -selection clipboard</code>. viz <code>man xclip</code> pro více informací.</p><p> <a href="http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt">freedesktop.org</a> jsou dobré informace o různých schránkách.</p> <p>společným webovým rozhraním pro tuto úlohu je mít položky v seznamu, s možností prohledávat a třídit seznam. v pravém (posledním) sloupci je tlačítko pro úpravy, po klepnutí se řádek upraví a přepne se na dvě nová tlačítka - „uložit“ a „zrušit“.</p><p>po aktualizaci řádku nezapomeňte uživateli poskytnout zpětnou vazbu, pokud byla operace uložení úspěšná nebo ne.</p><p><img src="https://i.stack.imgur.com/g4nz0.png" alt="enter image description here"></p> <p>tady nesouhlasím s velkými a komplikovanými dotazy s datagodem. vidím je pouze jako problémy, pokud jsou zmatené. pokud jde o výkon, jsou téměř vždy lepší, protože plánovač má mnohem větší svobodu při získávání informací. velké dotazy však musí být psány s ohledem na údržbu. obecně jsem zjistil, že jednoduchý, dobře strukturovaný sql lze snadno ladit, i když jediný dotaz pokračuje pro 200+ řádků. je to proto, že obvykle máte docela dobrou představu o tom, s jakým problémem se zabýváte, takže v dotazu je jen několik oblastí, které musíte zkontrolovat.</p><p>problémy s údržbou, ime, přicházejí, když se rozpadne struktura sql. dlouhé, složité dotazy v dílčím výběru zhoršují čitelnost a odstraňování problémů, stejně jako inline pohledy, a při obou dotazech je třeba se vyhnout. místo toho použijte zobrazení, pokud je to možné (všimněte si, že jste na mysql, zobrazení nefungují tak dobře, ale na většině ostatních db to dělají), a použijte běžné výrazy tabulek, kde ti nefungují (mysql tyto nepodporuje mimochodem).</p><p>dlouhé složité dotazy fungují velmi dobře, a to jak z důvodu údržby, tak z hlediska výkonu, kdy si necháváte klauzule tam, kde je to jednoduché, a kde uděláte cokoli, co můžete, s připojením namísto podvýberů. cílem je zajistit, aby „záznamy se nezobrazovaly“, vám poskytne několik velmi konkrétních míst v dotazu ke kontrole (je to upuštěno do spojení nebo odfiltrováno v klauzuli where?) a tým údržby dokáže věci skutečně udržovat.</p><p>pokud jde o škálovatelnost, mějte na paměti, že čím větší flexibilita má projektant, to je také dobrá věc ....</p><p>edit: vy zmiňujete, že se jedná o mysql, takže je nepravděpodobné, že by pohledy fungovaly tak dobře, a cte jsou mimo otázku. uvedený příklad navíc není příliš dlouhý nebo složitý, takže to není žádný problém.</p> <p>chcete-li zkontrolovat nestandardní řazení ve sloupcích, můžete použít následující dotaz:</p><pre><code>select table\_schema, table\_name, column\_name, collation\_name from information\_schema.columns where collation\_name is not null order by table\_schema, table\_name, ordinal\_position; </code></pre><p>chcete-li najít řazení databáze, je třeba zadat dotaz <code>pg\_database</code>:</p><pre><code>select datname, datcollate from pg\_database; </code></pre><p>zde jsou relevantní stránky příručky postgresql:</p><ul> <li> <a href="http://www.postgresql.org/docs/current/static/infoschema-columns.html">http://www.postgresql.org/docs/current/static/infoschema-columns.html</a> </li> <li> <a href="http://www.postgresql.org/docs/current/static/infoschema-collations.html">http://www.postgresql.org/docs/current/static/infoschema-collations.html</a> </li> <li> <a href="http://www.postgresql.org/docs/current/static/catalog-pg-database.html">http://www.postgresql.org/docs/current/static/catalog-pg-database.html</a> </li> </ul> <p>myslím, že znamenají, že byste měli používat <a href="http://en.wikipedia.org/wiki/smart\_pointer">inteligentní ukazatele</a> místo běžných ukazatelů.</p><blockquote> <p>ve vědě o počítačích je inteligentní ukazatel abstraktní datový typ, který simuluje ukazatel a zároveň poskytuje další funkce, jako je automatický sběr odpadu nebo kontrola mezí. účelem těchto dalších funkcí je omezit chyby způsobené zneužitím ukazatelů při zachování účinnosti. inteligentní ukazatele obvykle sledují objekty, na které ukazují, za účelem správy paměti.</p> <p>zneužití ukazatelů je hlavním zdrojem chyb: konstantní alokace, deallokace a odkazování, které musí být provedeny programem napsaným pomocí ukazatelů, představuje riziko, že dojde k úniku paměti. inteligentní ukazatele se pokoušejí zabránit úniku paměti automatizováním automatického přidělování prostředků: když je ukazatel (nebo poslední v řadě ukazatelů) na objekt zničen, například proto, že je mimo rozsah, je zničen i špičatý objekt.</p> </blockquote><p>v c++ by byl kladen důraz na sběr odpadu a zabránění úniku paměti (abychom jmenovali alespoň dvě). ukazatele jsou základní součástí jazyka, takže jejich použití je do značné míry nemožné, s výjimkou nejvzácnějších programů.</p> <p>vícenásobný výběr přetažením, ctrl-kliknutí a shift-kliknutí jsou přiměřeně použitelné, pokud uživatel obvykle vybere najednou pouze jeden objekt. mají slabou objevitelnost, ale jsou velmi efektivní pro uživatele. spolu s popisovanou metodou zrušení výběru jsou standardy, takže mnoho uživatelů již ví, jak to udělat, takže zjistitelnost není tak velkým problémem, jak by si člověk myslel. kromě toho je vícenásobný výběr obvykle zkratkou odborníka. ve většině aplikací může vše, co může uživatel dělat s vícenásobným výběrem, také s jednorázovým výběrem - bude to trvat jen déle, takže dostupnost není považována za požadavek. <em>odchylka</em> od standardu, na druhé straně, pravděpodobně zaměří mnoho vašich uživatelů.</p><p>jedním kliknutím vyberte, je dobré, když uživatel musí vybrat více položek, aby mohl úspěšně dokončit klíčovou úlohu. je to rychlejší než kliknutí ctrl, ale ne tak rychle jako kliknutí shift nebo přetažení pro větší počet přilehlých objektů. na druhé straně má mnohem lepší objevitelnost. umístění ovládacího prvku podobného zaškrtávacím políčkům vedle každé ikony účinně komunikuje, že každý výběr přetrvává prostřednictvím jediného kliknutí. možná budete potřebovat tlačítko vymazat pro vymazání všech výběrů.</p> protože používáte WinForms aplikaci, pokud je to v NET 2.0 je to vlastně systém uživatelských nastavení (tzv Properties), který je navržen pro tento účel. [Tento článek na webu MSDN](http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx) má docela dobrý úvod do této


Pokud jste stále obavy o výkonu pak se podívat na [SQL Compact Edition](http://www.microsoft.com/sql/editions/compact/default.mspx) , který je podobný SQLite, ale je dar společnosti Microsoft, který jsem našel hraje velmi pěkně s WinForms a je tu i možnost [, aby to fungovalo s LINQ](http://geekswithblogs.net/steveclements/archive/2007/11/13/LINQ-to-SQL.compact.aspx) <p>můžete zvolit zobrazení dotazu; je to zaškrtávací políčko nazvané „zobrazit dotaz sql“ na stránce nastavení zobrazení (správce/struktura/zobrazení/nastavení).</p> <p>domnívám se, že je nutné omezit nebo najít, aby bylo možné získat opakované události, jinak je aplikace outlook nerozbalí. také musíte seřadit podle start<em> před </em>setting includerecurrences.</p>