-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
Homer
tag
"Laza kellemes hely lehet", ha mellette ráérsz fórumozgatni is közben.

Na jól van, nem leszek gonosz.
Az, hogy valaki mással (is) tölti az ebédidejét /szabad kapacitását nem jelenti azt, hogy olyan laza lenne a munkája. Én spec azért kezdtem el tanulni a VB-t, mert hasznát vettem a munkámban. Már nem egyszer fordult elő, hogy egy Excel-es feladatot VBA segítségével oldottam meg. Innen indult a programozás iránti érdeklődésem. Most ott tartok, hogy Turbo pascal megy valamennyire (ezt még egyetemen tanították), meg VB olyan alap-közép közti szinten (legalábbis itt érzem magam). Ezt már autodidakta módon tanultam. -
Homer
tag
Szia!
Ez egy VB topik, mi akik itt segítkezünk szeretjük a VB-t, sok mindenre szvsz a VB a legjobb választás. Viszont mint te is látod, erre a tök egyszerű dologra éppen nagyon nem jó választás. Mint látod pl. DirectX-hez, meg mindeféle alacsony szintű grafikus API-hoz baromi körülményes passzintani.
De hogy konstruktív is legyek. Ha én VB-ben mindenképpen ezt akarnám megvalósítani, akkor:1. VS2010 kuka, VS2012-t használnék. Ismét megkérdezem miért VS2010-et használsz?
2. WPF-ben csinálnám vagy Silverlight-tal (szintén halódó, de létező technológiák), sokkal jobban kezelik alapból mindeféle DirectX, meg OpenGL nélkül is az animációkat, mint a windows forms.
3. Esetleg XNA-vel csinálnám, abszolút nem csak windows phone-ra jó, xbox-ra, meg sima windows-ra is lehet XNA-vel fejleszteni. Szvsz a sorozatos beteg MS döntések egyike (remélem a legutolsó) volt, hogy tavaly óta nem fejlesztik tovább, így win8-ra, új Xbox-ra, wp8-ra már az XNA nem megfelelő, azaz halálra van ítélve.Csak az első pontra válaszolnék, a többivel tulajdonképpen egyetértek.

Azért, mert a munkahelyemen csak ilyet sikerült telepíttetnem a rendszergazdákkal...Am. ezt találtam, majd kipróbálom:
[link] -
Homer
tag
Na most érted. Ha elolvastad, amit belinkeltél, akkor mi a kérdés? Várj, mielőtt újra felteszed a két kérdésedet, kérlek újra olvasd végig, amit belinkeltél
![;]](//cdn.rios.hu/dl/s/v1.gif)
Na ugye, hogy ott a válasz.
Gyengébbek, meg angolul nem tudók kedvéért, összefoglalom a lehetőségeidet:
1. Visual Basic használata XNA-vel (tudnod kell, hogy az XNA a win8 megjelenésével halottnak nyilváníttatott, de ettől még használható ha nagyon akarod).
2. VS2012 (tényleg miért éppen VS2010-et használsz) C++ projekt használata DirectX-el.Egyébként játékot nem windows form alkalmazásban kell írni, nagyon nem.
Nyilván bele lehet kötni abba is, hogy egyáltalán miért éppen visual basic... Azért, mert ez van, és kész!
Nem akarok sem windóz 9-et írni, sem quake 5-öt visual basic-ben. Én csak arra lennék kíváncsi, hogy hogyan lehet egy egyszerű alakot egy formon villódzásmentesen frissíteni 25 fps-el, mert ugye ez kell, hogy folyamatos legyen a mozgás. Ha ehhez dx kell, akkor gondoltam nézegetm azt is, de ha xna akkor azt. Egyelőre egyikhez sem konyítok. Amit olvastam eddig róla, angol fórumokon, hogy közvetlenül kell programozni a videokártya gpu-t melyhez különféle windóz api-k vannak (OpenGL,DX, XNA...stb). OpenGL és DX kilőve a VB2010-ben, mert csak VC++ lib-et lehet hozzáadni a Visual Studio-hoz, azt is csak körülményesen. Az XNA meg, (amennyire látom), windows phone-hoz van gyárilag, tehát ez is buhera megoldás. (Persze megint lehet, hogy tévedek. Javíts ki ha gondolod!)
Na mindegy! Azért természetesen köszönöm a válaszokat!
-
Homer
tag
Sehogy, a referenciákat minden projekthez külön kell hozzáadni.
Másrészt ha egyszer már belőttél egy projekt típust, akkor tudsz belőle saját projekt template-et csinálni. És legközelebb abból tudsz új projektet csinálni, így végeredményben az új projektedben már benne lesz a megfelelő referencia.És egyáltalán lehet dx11 referenciát hozzáadni vb2010 projecthez?
Itt azt írják hogy nem:
[link]
Igaz lehet ez? Van valami alternatíva? XNA vagy ilyesmi?Az a problémám, hogy mozgatni szeretnék egy form főablakán egy "golyót" és folyton vibrál a frissítésnél.
Double buffered beállítással már próbálkoztam, picit jobb de nem tökéletes.
VB2003-ban még úgy emlékszem, hogy ment a dx. Az alapokat emlékszem, hogy próbálgattam benne, de itt sehogy nem akar összejönni. -
Homer
tag
Hello,
Visual Studio 2010-ben, Visual Basic-hez hogyan lehet beállítani a dx referenciakönyvtárat úgy, hogy az minden új projectnél megmaradjon?DX11 SDK (june 2010) telepítve van már.
-
Homer
tag
Először is visszakérdeznék, hogy miért kell asztali alkalmazás?
Aztán ha megtudnak győzni,hogy ehhez tényleg asztali alkalmazás kell, és windows 8-ról beszélünk (netalán), akkor html5+js-el.
És ha tényleg asztali alkalmazás kell, de windows 8 nem játszik, akkor utolsó lehetőségként wpf-el csinálnám MVVM design pattern-nel C# code-behind-al.Tudom ez itt egy VB.Net topik, nekem a kedvenc nyelvem a VB, de a konkrét kérdésedre, akkor is a fentieket tanácsolnám.
Meggyőzlek!
1.: Azért mert nem itthoni gépre kell fejleszteni! Adott a környezet amiben dolgozni kell.
2.: Kicsit olyan mintha neked azt mondanám, hogy programozó létedre magadnak cseréled ki a dugattyúgyűrűt a trabantodban. Attól, hogy az autószerelés nem a szakmád még érdekelhet a dolog. És amikor azt mondod, hogy van már sokkal jobb is (vb.net helyett akármi), igazat adok neked! Tényleg van már sokkal jobb autó is mint a trabi, de a lehetőség adott. Hiába írnék a Porsche topicba...Arra a mondatra, hogy az adatbázisba csak berakom, a formokon meg kezelem..., pont ez az! Az adatbázisban (értsd adatkészletben) vannak az adatok amikből a választólistát kellene feltölteni. Ezért kellene átadni a listát a form2-nek.
És akkor egy kis on topic is!
Ha már C, akkor ott, hogy csinálnád? -
Homer
tag
Azt nem értem miért akarsz te bármilyen adatot átadni form1-ről form2-nek? Nem pont from2-n veszed fel az adatokat, és adod vissza form1-nek? És mindez persze csak képletesen szólva, miel valójában a DB-be kell visszajuttatndo az új adatokat, majd ha már ott vannak form1-en csak frissíteni kell a grid-et.
Szerintem te valamit nagyon túlbonyolítottál.
Manapság már nem triviális winforms tutorialokat találni, mivel alig fejleszt bárki winforms-t. Bár szerintem az MS How do I sorozat több éves videói biztosan megtalálhatóak még valahol.Nem!
Akkor még egyszer!
A három tábla tehát:
1. Egy összegző (fordító) tábla, mely tartalmaz egy rendszám oszlopot, egy típuskód oszlopot, és egy színkód oszlopot
2. Egy Típus tábla, mely tartlamaz egy típuskód, és egy típus(szöveg) oszlopot
3. Egy Szín tábla, mely tartalmaz egy színkód oszlopot és egy szín(szöveg) mezőt(Nem tudtam rendesen formázni a PH-n a táblákat korábbi levelemben mert csak egy szóközt enged..., talán ezért volt félreérthető.)
A táblák közti kapcsolatok beállítva.
Típus tábla elsődleges kulcsa a típuskód mező, mely idegen kulcs a fordító táblában.
Szín táblában a színkód elsődleges kulcs, és ez is idegen kulcs a a fordító táblában.Szóval, a nyitóformon megjelenik az öszes rekord. (Nyilván nem a színkóddal és a típuskóddal, hanem a szín és a típus szöveggel, ergo sima adatkötéssel nem tudom ezt megoldani (legalábbis eddigi tudásom szerint), de nem is ez most a kérdés.)
Szal eddig okés.
Nah, és itt és most, szeretnék egy új ablakot nyitni az új adatok felviteléhez.
Az új ablakban lenne mondjuk egy textbox a rendszám beírásához, és két combobox a szín és a típus kiválasztásához.
A comboboxoknál a displaymember tulajdonságát a szöveges mezőkre, datamember tulajdonságát a kulcs oszlopra állítva tudom állítgatni a dolgokat, és egy adatsort visszaadva a főformnak, már hozzá is adható az új sor a fordítótáblához.Valami ilyesmit szeretnék csinálni, és ehhez szeretnék találni forráskódot, amit vizsgálgatni tudnék, hogy hogy szokás az ilyen "problémákat megoldani".
Valójában amit itt írtam az nem a valós probléma, amit meg kellene oldani, de nem is várom el, hogy azt megoldjátok helyettem. A konkrét feladatom megoldásához vagy 5-6 táblát kellene átadogatnom a formok közt. Ezért vannak kételyeim, hogy szerencsés-e az a megoldás, ha átadom (akár) az egész adatkészletet (adot esetben akár 99 másik formnak is?), vagy egy profi programban inkább egy megosztott készletet használnának. Referenciaként adják át, így nem többszöröződik a memóriában az adatkészlet? Esetleg csak az 5-6 táblát adják át ilyenkor? Ez pedig ennyi paramétert követelne a 2. form konstruktorában...Összegezve: ezért lennék kíváncsi egy olyan valaki hozzászólására aki "látott már ilyet".

-
Homer
tag
Linkeljetek már légyszi egy olyan oldalt, ahol arra találok példát, hogy hogyan szokás azt megoldani, hogy egy feltöltött adatkészlethez (több táblával pl. form1-en vagy megosztva), egy másik formról, pl. form2-ről kérnek be olyan adatokat, melyeket szintén ezen adatkészletben tárolt adatok alapján lehet kiválasztani pl. különböző combobox-okból, (tehát ugyan azon adatkészlet más-más tábláiból), és az eredményt szintén ebben a táblában tárolják.
(Remélem érthető vagyok.
)
Köszi!Hogy érthetőbb legyek:
Tábla 1:
Autó színe Rendszám Típus
1 AAA-000 2
2 BBB-000 1Tábla 2:
Színkód Szín
1 Piros
2 ZöldTábla 3:
Tíuskód: Típus:
1 Trabant
2 FerrariMind a 3 tábla egy adatkészletben van a form1-en. A táblák közti kapcsolatok beállítva.
Ez a form, teszem azt, az adatok táblázatos megjelenítésére való, egy datagriddel, amely kötve van a Tábla 1-hez, és van rajta egy nyomógomb ezzel a felirattal:"Új rekord felvitele"Most nyitok egy új formot (form2)
A form2-n van egy textbox a rendszám beírásához, meg két combobox melyből egyik a szín bevitelére másik a típus bevitelére szolgál. Ha itt okét nyomok akkor kellene a form1-nek visszaadni az értéket.
Ilyenkor hogy szokás átadni az adatokat form1-ről form2-re?
v1: Form2-n új adattáblákat csináljak és feltöltsem a form 1 táblák adataival?
v2: Dataview-ok használatával?
v3: Csak String-ekkel töltsem fel a listboxokat, aztán a kiválasztott értéket keressem vissza a main adatkészlet megfelelő táblájában? -
Homer
tag
Linkeljetek már légyszi egy olyan oldalt, ahol arra találok példát, hogy hogyan szokás azt megoldani, hogy egy feltöltött adatkészlethez (több táblával pl. form1-en vagy megosztva), egy másik formról, pl. form2-ről kérnek be olyan adatokat, melyeket szintén ezen adatkészletben tárolt adatok alapján lehet kiválasztani pl. különböző combobox-okból, (tehát ugyan azon adatkészlet más-más tábláiból), és az eredményt szintén ebben a táblában tárolják.
(Remélem érthető vagyok.
)
Köszi! -
Homer
tag
Sziasztok!
Olyat hogy lehet csinálni hogy egy userformon lévő textboxon keresztül a user megad egy számot (1-től 10-ig) majd ennek megfelelően a program létrehozza a megadott számú textboxot ugyanezen a formon (vagy akár újon) és hogy lehet dolgozni /azonosítani ezeket a textboxot hogy ezeknek az értékeit tudjam használni?
köszi
bPl. vb.NET-ben:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
x = InputBox("Add meg a textboxok számát", "Program", 1)
For i As Integer = 0 To x - 1
Dim teksztboksz As New TextBox
teksztboksz.Location = New Point(10, 5 + i * 20)
Me.Controls.Add(teksztboksz)
Next
End SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hanyadik As Integer = 0
For Each elem As Object In Me.Controls
If TypeOf elem Is TextBox Then
hanyadik += 1
If elem.text <> "" Then
MsgBox("A(z) " & hanyadik & ". textbox tartalma: " & elem.text)
End If
End If
Next
End Sub -
Homer
tag
Sziasztok! A segítségeteket kérném, mivel én nem vagyok járatos Visual BAsicben, ezért hozzátok fordulnék segítségért: kaptam eg ynagyon jó ismerősömtől egy kódrészletet, ami a szakdogájához kellene, de mivel ő műszaki menedzsernek tanul távol áll tőle a programozás. A programkód a következő lenne:
Function Szoveget_General(Hossz As Integer, Seed As Integer) As String
Const Kisbetuk = "aábcdeéfghiíjklmnoóöőpqrstuúüűvwxyz"
Const Szamjegyek = "0123456789"
Const Egyeb = "'!%$/=<>()\/[]#&@{}<,;:.?+-_ "
Dim i As Integer, db As Integer, Karakterek As String, st As String
Rnd (-1)
Randomize (Seed)
Karakterek = Kisbetuk + UCase(Kisbetuk) + Szamjegyek + Egyeb
db = Len(Karakterek)
st = ""
For i = 1 To Hossz
st = st + Mid(Karakterek, Int(Rnd * db) + 1, 1)
Next
Szoveget_General = st
End FunctionElőre is köszönöm a segítségeteket.
És mi a kérdés?

-
Homer
tag
időközben kész lett a programod?
egyébként hagyd az acces-t, de még az mdf fájlokat meg az sql lite-ot is. Lassúak. De nagyon.
Még ha fejlesztői környezetben gyorsnak is tűnnek, a kliens gépén "kínhalál".
Amilyen futó környezetet vázoltál, arra alkalmas lehet egy postgresql szerver (pgadminIII-mal), van hozzá net connector, és iszonyú gyors. És még az adatokat sem lehet manipulálni fájl szinten, nem úgy, mint egy acces mdb esetében.
Egyébként ajánlanám az sql áttanulmányozását. Hihetetlenül leegyszerűsítené a dolgodat szerintem.
És nem kell félni a bonyolult sql utasításoktól. Pont erre találták ki.
Szia Himre82!
Nem lett még kész a progim, de apránként azért haladok vele.

Nem akartam leírni az egész problémát mert hát nem várom el senkitől, hogy megodja helyettem, és tulajdonképpen csak egy-egy részében akadok el mindig. Ezekre itt-ott mindig találok is megoldást, csak később mindig máshol futok hasonló zsákutcákba. Na de akkor már ezt is közkincs tárgyává teszem:
Sajna nem tudok sql servert használni, mert a progimat munkahelyi környezetben használnám majd, és ott nincs lehetőségem adatszolgáltatót üzemeltetni. :\ Ezért maradtam az access file-nál. Hogy ezt is magyarázzam egy picit, az Excel kezelésével a kollégák nagy része már találkozott, így nem okoz gondot nekik a táblák módosítgatása az eddig használt VBA makrós nyilvántartásban (...ezzel persze hibákat generálva a program futásában...). Tudom, itt is le lehetne védeni a munkalapokat jelszóval, de úgy gondoltam, ha már VB, akkor kicsit fejlesztem a tudásomat és gyakorlásképpen megpróbálom inkább megcsinálni az adatkezelő progit, ami már nem excel táblákat módosítgat, hanem igazi adatbázis motorra épül. (Most jöhetnek a kritikák, hogy akkor meg miért nem tisztán accessben csinálom meg? A kérdés jogos! A válsz: azért, mert tanulom a VB-t! Mivel nem szakmám a programozás, csak hobbi szinten űzöm! Szerintem ez is nagy dolog már, hogy idáig eljutottam önszorgalomból.) Az Exceles táblával amúgy azóta semmi gond nincs. Az első pár hiba után, amit manuálisan javítottam, elmagyaráztam többieknek, hogy mi okozta, és azóta mindenki rendesen használja, csak amikor azt megírtam, akkor még nem volt arra igény, hogy mind az állapotfigyelt, és mind a nem állapotfigyelt szerszámot egy rendszerben kezeljük. (A másik dolog, hogy a VB tudásom is sokat fejlődött azóta, és egy csomó dolgot már nem úgy csinálnék meg mint anno.)
Az SQL áttanulmányozása egyébként jó ötlet! Egyet is értek veled, de egyelőre megmaradnék az SQL alapoknál. Később biztos ráfekeszem majd erre is, ha még érdekel majd a dolog. Tényleg jó dolgokat meg lehet csinálni vele, az eddigi tudásoml már elég ahhoz, hogy ezt belássam.

-
Homer
tag
Tulajdonképpen egy "egyszerű" szerszámnyilvántartó progit szeretnék csinálni. A különböző féle szerszámokat egy táblában tartanám nyilván, a jellemzőiket egy másikban. A progival lehetne új szerszámot felvenni, átkönyvelni két tárhely közt, életutat figyelni (azaz mikor lett kikönyvelve és mikor kaptuk vissza). A "gond" az hogy a szerszámok közt van olyan amik egyformák, de meg kell különböztetni őket egymástól. Ezeket a rajzszámuk és egy egyedi azonosító alapján lehet egyértelműen meghatározni, de értelem szerűen a jellemzőik egy másik táblában ugyan azok. Remélem érthető vagyok.
Nah, és itt jön az amit kérdeztem. Teszem azt az első Form-on megjelennének egy listbox-ban, vagy comboboxban, vagy datagrid-ben, vagy datagridview-ban ha már VB2010
- de tulajdonképpen tök mindegy - a jellemzőkben felsorolt szerszámok. Ha valamelyiket kiválasztom, akkor egy új ablakban (hogy miért új ablakban, annak is megvan az oka) egy listbox-ban már csak az ehhez tartozó egyedi azonosítók jelennének meg. Itt kiválasztom a megfelelő egyedit, majd egy könyvel gombon meg kellene adni hogy egyrészt kifelé, vagy befelé történt a könyvelés, egy állaptra vonatkozó típusú érték paramétert kellene megadni, és tulajdonképpen ennyi.
Ezt a feladatot már többféle módon is megoldottam.
Legegyszerűbb az volt, amikor a dataset megfelelő tábláit hozzákötöttem a vezérlők datasource tulajdonságaihoz. Itt ott akadtam el amikor egy kapcsolótáblával kellett volna dolgoznom. Tehát mondjuk a második ablakban a szerszám neveit - típus alapján - egy harmadik táblából (PL.: Szerszám neve a jellemzők táblában csak egy kód, amit a harmadik táblából tároltam) kellett volna kiválasztani. Ekkor gondoltam arra, hogy adatkészletből feltöltök egy objektum kollekciót (itt minden objektum már létrehozásakor kikeresi számára a hozá tartozó infókat (név, azonosító, tulajdonságok, állapotinfók...stb), majd ezeket már egyszerűen tologathatom a Formok közt. Így is megcsináltam. Itt tök egyszerű a szerszám beazonosítása ID alapján, és az SQL parancsok is végtelenül leegyszerűsödtek
. A formok közt is már csak egy kis kollekciót kell átadni. Véleményem szerint nem túl elegáns dolog viszont az, hogy feltöltök egy adatkészelet, aztán azt még "átképzem" objektummá, és innen ered a kezdeti kérdésem... Még arra gondoltam hogy egy (-két..-öt?) datareaderrel is meg lehetne oldani ugyan ezt, így még nem próbáltam, de a visszaíráskor akkor megint SQL-ben kellene megírni az utasítsokat, ami (szintén) nem erősségem. Meg hát szerintem még 100 más módon is meg lehetne oldani. -
Homer
tag
Ez esetben első lépésként tanulj meg rendes adatbázist használni. Az Access felejtős (mondom én, aki rendszeresen programozok Access makrót is akár
)
Javaslataim:
Egy jó kis SQL 2012 Express, vagy Local, vagy SQL Compact 4.
Esetleg SQLite.
De pl. MySQL-hez, és Oracle-höz is vannak normális EF providerek.
Hidd el a fekete könyv VB6-os tudása mit sem ér. VB.Net szintaktikailag sem egyezik meg VB6-tal, maximum ránézésre. MSDN, Gugli lesz a barátod.Köszönöm a sok infót amit írtok! Az a helyzet, hogy nem tudok ilyen megoldásokat használni. Nézegettem már a MySQL-t, meg az SQL-t korábban, hogy képben legyek valamennyire miről is szól a kliens-szerver megoldás, de mivel munkahelyi gépen szeretnék kezelni adattáblákat, ott nem tudom megoldani, hogy adatkiszolgáló(ka)t telepítsek. A mezei futtatható exe-t viszont el tudom indítani majd, és egy megosztott mappába helyezett mdb file-t meg "egyszerű" lesz kezelnem, és létrehoznom is. ...gondoltam én, kis naív...

Tudom, hogy igazatok van, VB és .NET majdnem ég és föld, viszont itthon azt telepítek amit akarok, ezért feltettem a VS2010-et, azonban benn a cégnél csak egy régi VB2003 van feltelepítve. (Ez is agyonra kicsontozva, de ez most mellékes. Még súgó sincs benne...) Ezért mondom, hogy felváltva használom mind a kettőt, így számomra mindegy, hogy .NET vagy sem, hogy 2003 vagy 2010, vagy akár az is hogy VS vagy annak csak egy része, azaz VB.

Amúgy, nem kenyerem a programozás, mm nem szakmám. Csak úgy mellékesen tanulgatom ráérő időmben, mert néha sokat tud segíteni egy-egy excel makró is.
Ennek sincs köze ugye a .NET-hez. .NET-ről olvasgatva meg, van pár(száz) oldalnyi eltérés, de sztem tök érthető a kód, ha eltérés van is. Az alapok hasonlók, ha nem is ugyan azok. Pl.: az alapok megértéséhez, kapcsolódáshoz szükséges objektumok megértéséhez hasznosnak találtam, de ízlések és pofonok kérdése.
Am. az EF-ről eddig még nem hallottam, szal már kaptam hasznos infót tőletek, ezért jó fórumozni! Köszi még 1x!Visszatérve az alap kérdéseimre: Ti hogyan oldanátok meg ilyen feltételek mellett a program működését? Arra lennék kíváncsi, hogy minden egyes rekordot egy-egy objektum-ként kezelnétek és az objektumok felelnének az adatkészlebe írásért, vagy inkább az adatkészlettel "trükköznétek" közvetlenül?
A másik kérdésem pedig az volt eredetileg, hogy az ablakok közti adatcserét hogyan oldanátok meg? Az egész adatkészlet public-ká minősítésével a programban, objektumok (objektum kollekciók) átadásával, új rekordkészletekbe másolnátok az első készlet megfelelő mezőit, esetleg valami más módon? (Belegondolva..., tulajdonképpen ebből ered az első kérdésem is
) -
Homer
tag
Hát jó, legyen...

De akkor most az új kérdésem: lehet használni az EF-et helyi Access (mdb) adatbázis file kezeléséhez? -
Homer
tag
úristen ez a kiolvastam a fekete könyvet már rosszul indul. Mikor is írták 2001-ben?

Te most VB6-ozni tanulsz, vagy VB.NET 4-ezni? Sőt szólok, hogy még idén befut a VB.NET 4.5 (vagy 5?) is.
Entity Framework-öt keresed úgy vélem. Tele van az internet hozzá tartozó tutorialokkal, a hivatalos honlapján vannak minta programok is.Mégsem jó ez a megoldás. Amennyire most látom, az EF-et nem tudom használni, csak SQL adatszolgáltatóval. Jól látom, hogy ha én egy adatbázis file-t szeretnék OLEDB-vel közvetlenül kezelni akkor ez nem használható?
-
Homer
tag
úristen ez a kiolvastam a fekete könyvet már rosszul indul. Mikor is írták 2001-ben?

Te most VB6-ozni tanulsz, vagy VB.NET 4-ezni? Sőt szólok, hogy még idén befut a VB.NET 4.5 (vagy 5?) is.
Entity Framework-öt keresed úgy vélem. Tele van az internet hozzá tartozó tutorialokkal, a hivatalos honlapján vannak minta programok is.:$
Igazából nekem tök mindegy, hogy VB6 vagy VB net.
Lehet furán hangzik ez így, de alapnak sztem jó volt a könyv, és hozzá tudok nyúlni bármikor, ha éppen nem jut eszembe egy kifjezés szintaktikája.
Nézegettem amit javasolsz! Lehetséges, hogy tényleg ezt keresem.
Köszi! -
Homer
tag
Sziasztok!
Mint már korábbi hsz-eimben is írtam, autodidakta módon próbálom elsajátítani a VB-t, ezért előre is elnézést kérek, ha valami gagyi dolgot kérdeznék, amit természetes, hogy mindenki tud, csak persze én nem. :$
Kérdésem annyi lenne, hogy oop-ban milyen módon érdemes felépíteni az objektumokat adatbázis kezeléshez? Honnan tudnám ezt megtanulni? Tudtok valami jó könyvet hozzá? A VB fekete könyvet végigolvastam, de számomra nem derül ki belőle, hogy mi lenne az optimális út.? Tulajdonképpen megismertem általa magát a nyelvet, csak nem tudom optimálisan használni. :S
Egy konkrét, egyszerű példa, pl:
oldedb-vel beolvasok egy adatkészletbe pár táblát, amik közt kapcsolatokat is definiálok. (Teszem azt személyeket tartok nyilván, ID alapján, mellette egy másik táblában a szemük színét. A két tábla közt pedig egy fordítótábla van. Pl: Az első tábla 1. személyéhez tartozik a második tábla 6. sorában található kék szín. Ezt tárolja a 3. tábla.) Eddig gyönyörű is a történet, megvannak a kapcsolatok, tudok vezérlőket kötni a táblák adataihoz is, ez alapján akár még szűrni is a grid megfelelő sorait. Mondjuk módosítani akarok bizonyos adatokat vezérlőkkel, és nem közvetlenül egy kapcsolt datagrid-ben, esetleg egy új formon, amiben ki akarom választani egy combobox-ban a személyt, majd szemszínt egy listbox-ból. A változást vissza akarom írni az Access mdb file-ba.
Itt jön a kérdésem. Ha a fenti módon járok el, akkor a formok közti adatátadás során a készlet szűrt sorainak átadása jelent gondot, hiszen a szülő form adatait csak a sorszámuk alapján tudom elérni, vagy generálni kell hozzá egy key-t, ami véleményem szerint plusz adatokat generál. Sikerült így is megcsinálnom a progit, ami hellyel-közzel működött is.
Csinálhatnék az új formon is egy új adattáblát, amibe „átmásolom” a szülő form eredménylistáját a form deklarálása után.
Aztán gondoltam személy-objektumokkal próbálom megoldani. Ekkor csináltam minden egyes emberről egy objektumot. Az objektum tartalmazta a személy ID-jét is, így egyszerű volt kikeresni a táblában, hogy melyik személyre vonatkozik a módosítás. Megúsztam a formok közti adatcsere gondját is, hiszen egy kollekcióban át tudtam adni az összes módosítani kívánt személyt, ID-vel együtt. Itt viszont azért kellett plusz adatokat generálni, mert beolvastam az adattáblák adatait az adatkészletbe, aztán onnan megcsináltam az objektumokat, ergo mindent 2x kellett memóriába tölteni, cserébe viszont egyszerű volt megkeresni, hogy melyik sort kell módosítani a készletben, és az adatkészlet tábláinak update-elése is tötrénhetett egy-egy sima dataadapter.update(dataset) procedúrával.
Még arra is gondoltam, hogy a kettő fenti megoldást lehetne ötvözni, és olyan objektumokat létrehozni, amelyek nem az adatkészletből generált komplett adatobjektumokat kezelnek, csak bizonyos rekordmezőket tárolnék bennük aztán ez alapján beazonsítom a kívánt sort, majd elvégzem a kívánt módosítást az adatkészletre való közvetlen hivatkozással.
Remélem értitek a kérdésemet! Ezt hogy szokta megoldani egy vérbeli, ultraexpert, unatkozó programozó? Tudtok esetleg olyan oldalt ahol példákat találhatnék hasonló tipikus feladatokról? Nem kód érdekelne tehát, hanem az alapelgondolás. Mire építsem fel az objektumok rendszerét, és mikor? Úgy értem, esetleg egy datareader ismegoldás lehet, ahol nem kell adatkészletet feltölteni. Így egyből tudnék objektumokat létrehozni.Előre is köszi minden válaszra méltónak!
-
Homer
tag
Még egy kicsit gondolkodtam rajta. Ez is működik:

If MessageBox.Show("Hello", "Hello", MessageBoxButtons.YesNo) = DialogResult.Yes Then MsgBox("Ráokéztál")
-
Homer
tag
És végezetül, hogy ezzel is bővítsük a kérdező fegyvertárát, van még egy lehetőség az adatok bekérésére! Ez pedig az inputbox:
dim uj_valtozo as string
uj_valtozo=Inputbox("Mi legyen az új változó értéke?")Talán hasznos lehet ez is.
-
Homer
tag
eredmeny() = MsgBoxResult.Ok ez tuti hülyeség. Nem 100%, hogy jó megoldás, mert jóideje nem VB.Net-ezek, de
If MsgBox("Biztos ki akarsz lépni? Mindent mentettél?", Title:="Kilépés", Buttons:=MsgBoxStyle.OkCancel) = = DialogResult.OK Then Close()Így már a feltétel jó lesz, a Close rémlik, hogy jó, bár lehet, hogy Exit kell helyette? Close az aktuálisan nyitott form-ot zárja, ha ez az egy volt csak nyitva, akkor egyenértékű az Exit-tel.
Új ablakot pedig valami ilyesmivel tudsz létrehozni
dim formuj as form - ide majd a VS-ben megcsinált formod neve fog kelleni a form helyett
majd formuj.Show-val jön fel az ablak.Szerintem erre gondolsz:
dim ujform as new form
if ujform.showdialog =dialogresult.OK then....Itt a dialogresult eredményét neked kell beállítani a dialog-ban.
-
Homer
tag
Sziasztok !
Most kezdek ismerkedni a Visual Studio 2010 VB részével.
Egy olyan problémába akadtam amivel valamiért nem bírok boldogulni, pedig valószínűleg egyszerű, és kézenfekvő a megoldás:
Private Sub KilépésToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KilépésToolStripMenuItem.Click
MsgBox("Biztos ki akarsz lépni? Mindent mentettél?", Title:="Kilépés", Buttons:=MsgBoxStyle.OkCancel)
If eredmeny() = MsgBoxResult.Ok Then Close()Valamiért nem tudok kilépni.. Valószínűleg nem jól, vagy nem megfelelően kérdezem le az MsgBox visszatérési értékét. Vagy egyszerűen az MsgBox-ra értődik a Close() utasítás így?
Egy másik kérdésem az lenne, hogy milyen utasítással lehet egy formon felépített menüszerkezetből ( Private Sub ValamiToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles ValamiToolStripMenuItem1.Click )
egy új ablakot felhozni, amin pár adat bekérhető, pld inputbox, stb.. és ezek eredményeit visszaadni a főalkalmazásnak?Hello,
én így csinálnám:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
..........................As System.EventArgs) Handles Button1.Click
.........Dim valasz As integer
.........valasz = MsgBox("Hello", MsgBoxStyle.YesNo, "Semmi")
.........MsgBox("A válaszod: " & valasz)
End SubEszerint az igen válasz esetén a valasz változó értéke 6 nem esetén pedig 7.

...mondjuk ez nem VS2010 hanem VB2003, de sztem használható lesz...
... ha pl kilépésre akarod használni akkor tovább folytatva:
if valasz = 6 then end
-
Homer
tag
Sziasztok!
Itt mindig olyan segítőkész emberkékre találok, remélem mostani kérdésem is válaszra talál majd. A feladat a következő lenne: Adott két táblázat (munkalap), és a két táblázat különbségét kéne venni, ezt egy haramadik táblázatba (munkalapra) kéne tenni. Erre érdemes makrót írni, vagy valamit tud ezzel az excel kezdeni egyszerűen is?
pl: adott A és B táblázatból készítünk egy C táblázatot mely AB különbségeit tartalmazza.
(A) táblázat (oszlopokat kötőjellel választom el):
a - 2 - 3
a - 3 - 7
b - 1 - 2
b - 3 - 4(B) táblázat:
a - 2 - 3
a - 3 - 7
b - 3 - 2
b - 3 - 4
c - 1 - 1(C) eredmény táblázat:
b - 1 - 2
b - 3 - 2
c - 1 - 1Úgy is felfoghatjuk, hogy olyan program kell, ami azon adatokat teszi be egy táblázatba amely adatból adott A vagy B táblázatban csak az egyikben szerepel, tehát aminek a másik táblázatban nincsen párja.
Várom az ötleteket, illetve megoldásokat. Köszönöm előre!
))Elképzelhetőnek tartom, hogy a kimutatás eszközzel lehet makró nélkül is ilyet, de nem biztos.
-
Homer
tag
Sajnos ez van.
Pénz nincs semmire, tehát a lightswitch kilőve.
Az Oracle-t használja a cég (a központi szoftverünk arra lett írva), de kétlem, hogy a szerverhez kapnánk hozzáférést, mivel az a központban van, mi meg megyei szinten vagyunk.
Az Access járható út lenne (gondoltunk is rá), de sajnos ahhoz még annyit sem konyítunk mint az excelhez és a VBA-hoz.Megj.: a gazdálkodói adatbázis jelenleg is excelben van (ugyan így VBA-val "megbolondítva"), de eljárt felette az idő. Új tartalmak szükségesek és megváltoztak az elvárásaink is, így arra gondoltunk, hogy már egyszerűbb újra írni, (és persze akkor már a funkciókat is kibővíteni) mint toldozni-foltozni.
Esetleg ha lenne egy mentor akkor elkacérkodnánk az access gondolatával, de anélkül egyikünknek sincs annyi (fölös) munkaideje, hogy önerőből belevesse magát a dologba.
Szerk.: a félreértések elkerülése végett, ez nem kiadott munka, inkább a saját munkánk megkönnyítése, és kihívás is egyben.
Juhuhuhúú...
Azt kell, hogy mondjam, részben egyetértek az előttem szólóval. Az excel már ehhez egy kicsit kevés, és nem erre való!Ami miatt viszont meg tudlak érteni, az az hogy hasonló cipőben járok. A cégnél ahol dolgozom nekem is sokat segít a makró, és én is ezért kezdtem el foglalkozni a VB-el és a VBA-al. Nálunk SAP van és abban kellene megoldani a hasonló feladatokat, de a fejlesztés időbe telik, és az a szomorú tapasztalatom, hogy ha kérünk egy programfejlesztést akkor hosszas várakozás után ugyan történik valami, de mégsem olyan lesz a z új program mint amilyet szerettünk volna.Hasonó kaliberű programokat írogattam már én is a könyvelgetéseinkhez. (SAP mellett! Egyik kollégám szerint az SAP a "Sz*pjon A P*raszt"-nak a rövidítése
)Kérdésedre:
Én egyesével töltögetném fel az oszlopban lévő adatokkal a combobox items gyűjteményét.valahogy így:
dim e as scripting.dictionary
for each elem in column(x)
...if not consist e elem.value and elem.value<>"" then e.add(elem.value
nextA fenti megoldás csak ötletelés, nem írtam be sehová, tehát valszeg nem működik ha copy-paste-zed

-
Homer
tag
-
Homer
tag
Üdv!
Esetleg mit szóltok az excel "hol.van" (match) függvényére. Nekem úgy tűnik használható lenne az adott problémára.
Az ötlet egyébként a kollégámé, őt illeti a dícséret.
Microsoft excel súgó:
"A függvény egy olyan elem tömbben elfoglalt relatív pozícióját adja vissza, amely megadott értékkel megadott módon egyezik. A HOL.VAN abban különbözik a többi kereső függvénytől, hogy a megtalált elem helyét adja meg, és nem magát az elemet.Szintaxis
HOL.VAN(keresési_érték;tábla;egyezés_típus)
Keresési_érték: Az az érték, amelynek segítségével a táblázatban a keresett érték megtalálható."
Én még sosem használtam eddig a HOL.VAN függvényt, de jah, igazad van! Azzal is meg lehet oldani a feladatot. (Mondjuk a fenti megoldásom is hasonló eredményt adna.)

A konkrét feladattól függ, hogy én melyiket használnám. Ha nem muszáj makrobizni, akkor én a helyedben megmaradnék a "gyári" függvényeknél... -
Homer
tag
A baj az, hogy amit szeretnél az kivitelezhető, de összetettsége miatt baromira nem egy fórum keretein belül.
Klasszikusan elértél arra a szintre, ahol vagy veszed a fáradtságot és magadtól kimókolod a megoldást, vagy fizetsz érte, és helyetted egy szabadúszó programozó valamelyik ráérős estéjén megcsinálja neked.Nem olyan bonyolult ez. Nekem nem ez a munkám, de érdekel a dolog.
Ezt hoztam össze:Public Sub proba()
....MsgBox (keres("h"))
End SubPublic Function keres(mit As String) As Integer
...Dim elem As Object
...Dim oszlop As Integer
...oszlop = 0
...For Each elem In Range("A1", "Q1")
.....oszlop = oszlop + 1
.........If mit = elem.Value Then
.............keres = oszlop
.........End If
...Next
End FunctionHogy olvashatóbb legyen bepontpontpontoztam.
Persze ha picit még gondolkodnék rajta biztosan találnék más megoldást is. (Pl. az elem típusa nem túl elegáns object-ként kezelve, dehát műxik.)A lényeg, hogy ha írsz egy ilyen function-t akkor azt bárhányszor meghívhatod a fenti sub-ban. Ez a megoldás A-tól Q oszlopig vizsgálja az egyezéseket. Ha nincs egyezés akkor 0-val tér vissza a függvény.
-
Homer
tag
Üdv!
Ez akár jó is lehetne, de túl hosszú és ha jól látom akkor minden egyes (keresett) oszlopfejléc szövegre meg kéne írni, ami több fáradtság lenne, mint ha minden egyes változáskor (ami mondjuk ritkán fog változni ha egyszer elkészült az egész) kézzel újraszámozom a megfelelő kódrészletet.
Nincs esetleg valami rövidebb megoldás?
Én gondoltam a vlookup-ra, de aztán elvetettem, minthogy meg kéne adni melyik oszlopban keresse a keresési értéket, de ha ezt tudnám akkor már nem volna szükség az egészre.
Tulajdonképpen nekem az is elég lenne, ha találnánk valami olyan megoldást ami megmondja, hogy a keresett szöveg milyen számú oszlop milyen számú sorában van (persze elég csak az oszlop száma is). Innen már nyert ügyünk lenne.
Egyébként köszönöm az eddigi ötletelést is!
Ha olyan függvényt írsz ami paraméterként megkapja a keresett szöveget, visszaadási értéke pedig az oszlop száma, akkor elég egyszer megírni, utána használhatod a függvényt ahányszor, és ahol csak akarod!
Valahogy így:
private function oszlop(byval mitkeresel as string) as integer
itt, a fent leírt módszerrel a fejlécsor összes elemén végigmész, majd
ha megvan a keresett oszlop akkor
return keresettoszlopszám
else
msgbox("Nincs meg minden oszlop")
end -
Homer
tag
Üdv!
Ez akár jó is lehetne, de túl hosszú és ha jól látom akkor minden egyes (keresett) oszlopfejléc szövegre meg kéne írni, ami több fáradtság lenne, mint ha minden egyes változáskor (ami mondjuk ritkán fog változni ha egyszer elkészült az egész) kézzel újraszámozom a megfelelő kódrészletet.
Nincs esetleg valami rövidebb megoldás?
Én gondoltam a vlookup-ra, de aztán elvetettem, minthogy meg kéne adni melyik oszlopban keresse a keresési értéket, de ha ezt tudnám akkor már nem volna szükség az egészre.
Tulajdonképpen nekem az is elég lenne, ha találnánk valami olyan megoldást ami megmondja, hogy a keresett szöveg milyen számú oszlop milyen számú sorában van (persze elég csak az oszlop száma is). Innen már nyert ügyünk lenne.
Egyébként köszönöm az eddigi ötletelést is!
Ha olyan függvényt írsz ami paraméterként megkapja a keresett szöveget, visszaadási értéke pedig az oszlop száma akkor elég egyszer megírni:
Pl:
private function oszlop(byval mitkeresel as string) as integer
itt pedig a fent leírt módszerrel
end -
Homer
tag
Vagy pl:
Public Sub test()
Dim Keresett As String
Keresett = "Keresettoszlopszövege"
oszlop = 1
Dim megvan As Boolean
megvan = False
While Worksheets("Munka1").Cells(1, oszlop) <> Keresett And Not megvan And _ Worksheets("Munka1").Cells(1, oszlop) <> ""
oszlop = oszlop + 1
If Worksheets("Munka1").Cells(1, oszlop) = Keresett Then megvan = True
Wend
If megvan Then MsgBox (Keresett & " megvan, a következő oszlopban: " & oszlop) Else MsgBox ("Nincs meg")
End SubMondjuk ha a keresett oszlop pont az első akkor nem működik, de nem tartana sokáig módosítani, hogy azzal is működjön. (Neked is hagyok gondolkodni valót
) -
Homer
tag
Halihó!
Egy újabb problémával találtam magam szemben VBA kapcsán.
Van nekem egy adattáblám ami, ugyebár tartalmazza az adatokat.
Userformon szeretnék keresést eszközölni a megfelelő kulcsadat segítségével.
A probléma pedig abban áll, hogy jelenleg csak úgy tudom visszakérni a megfelelő sor megfelelő oszlopának adatát, ha megmondom neki, hogy hanyadik oszlopból kérem vissza a kívánt adatot.
A cél viszont az lenne, hogy ne oszlopszámot kelljen megadnom, hanem az oszlopfejléc nevét, mert könnyen lehet, hogy még plusz oszlopokat kell közbeszúrnom, és ekkor minden egyes oszlopszámra hivatkozó kódrészletet újra kéne kézzel számolnom.
Jelenleg így használom:ComboBox4.Text = gtorzs.Cells(gsor, 7)
ahol gtorzs=a munkalap neve
gsor=a kiván sor sorszáma
7=oszlop számaTehát azt szeretném, hogy a "7" helyett legyen az oszlopfejléc neve (tudom, az hosszabb lesz, de így bárhová tehetném a táblán belűl).
Hogyan tudnám ezt kivitelezni?
Köszönöm a segítséget!
Üdv, vilagÉn úgy oldanám meg első körben, hogy a fejléc sorain végigmennék egy each cells in row(1) ciklussal, aztán egy változóban eltárolnám azt az oszlopszámot ahol a cella értéke megyezik a keresett oszlopnévvel. Ezután már hivatkozhatsz arra az oszlopra mint oszlop sorszám...
-
Homer
tag
Köszönöm ez egyelőre jó. Az előző formátumnál arra gondoltam hogy ez a színezés ez egy előre formázott táblázatban lesz, nagyon sok oszlopa van azért kell ez hogy az egész sort átszínezi ha rajta állok és ha más sorba kerül az aktív cella akkor, az előző sornak a formátumát állítsa vissza. Nem tudom mennyire írom érthetően, még eléggé amatőr vagyok VBA-ból

Örülök, hogy segíthettem.

Egyébként ajánlok neked is egy könyvet:
Balogh Gábor - Visual Basic és Excel programozás
a neten megtalálod...Megpróbálom elmagyarázni mi nem volt teljesen világos:
- Szóval ha van egy táblázatod amiben minden sor (esetleg minden oszlop is) egyforma formátumú, akkor nem gond ha előre meghatározott stílust állítasz be default értéknek.
régi sor(x) stílus = régi formátum- Ha a sorok megegyeznek, de az oslopok formátuma eltér (pl színük más) akkor a cellék formátumát egyesével kell állítgatni.
régi cella(régi sor, oszlop(1...x)) formátuma = default cellastílus (régi sor, oszlop(1...x) formátuma- Ha az eredeti sorok formátumai is eltérnek egymástól (azaz különbözőek), akkor még bonyolultabb a helyzeted, mert a default értéket az eredeti stílus szerint kell meghatározni.
tehát pl a visszaállításnál a
cella1 stílus = eredeti cellaformátum1.oszlop
cella2 stílus = eredeti cellaformátum2.oszlop
...Tudom nem teljesen érthető a magyarázat, bocs.

-
Homer
tag
Üdv.
Tud valaki linkelni olyan forrást, amelyből megtanulhatom a VB.NET szintaktikáját?

Üdv.
Pár könyv amiket én nézegettem:
Magyar és angol nyelven is elérhetők:
Fekete (és Kék) könyv. (Black book)
Alex Mackey - A NET 4.0 és a VS 2010Csak angol:
Visual Basic 2010 Programmer's Reference
Professional Visual Basic 2010 and .NET 4
Visual_Studio_2010_All-in-One_For_Dummies...és ha nagyon kezdő vagy (, mint én is), akkor ezek is hasznosak lehetnek, mert a VB alapok elsajátításához szerintem jók:
James Foxall - Tanuljuk meg a Visual Basic 2005 használatát 24 óra alatt
Demeter M. Ibolya - Visual Basic 6.0 lépésről lépésre
Juhász Tibor, Kiss Zsolt- Visual basic 2008-2010 Programozasi összefoglalo
Tóth Bertalan - Programozzunk vb rendszerben(Úgy írtam a neveket, hogy rákeresve gugliban az első-második találat már a közvetlen link lesz.)
-
Homer
tag
Sziasztok!
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A50")) Is Nothing Then Exit Sub
If Selection.Cells.Count > 1 Then Exit Sub
If Target <> "" Then
Rows(Target.Row).Interior.ColorIndex = 10
Else
Rows(Target.Row).Interior.ColorIndex = xlNone
End If
End Subezt a programot szeretném úgy átalakítani hogy ha kijelölök egy cellát akkor az egész sort beszinezze, de ha másik cellát jelölök ki akkor az előző sor visszaálljon az előző állapotába.
Szia!
Nem teljesen értettem amit akartál, de ha minden igaz akkor ilyesmi válaszra vársz.

Egyrészt az nem teljesen világos, hogy az intersect minek bele? Gondolom a több cella egyszerre történő kijelölése végett van benne, így ez esetben az általam javasolt megoldás nem működik majd. De azért gondolkodtam rajta. Tess:Public elozo, default As Integer
Const uj = 3Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Az új sor színének beállítására
Rows(Target.Row).Interior.ColorIndex = uj'Annak a vizsgálatára, hogy kell-e visszaállítani formátumot, azaz első kijelölés, vagy már volt előtte kijelölve valami?
If elozo <> 0 Then
Rows(elozo).Interior.ColorIndex = default
End If'Az előzőleg kijelölt sor száma
elozo = ActiveCell.Row' itt az eredeti cella formátumát kellene beállítani az 5 helyett de ezt pontosan nem értettem a leírásodból... :S
default = 5
End Sub -
Homer
tag
Helló,
Kösz az ötleteket, sajnos a megoldás nem ez lett.
Nem értem, hogy miért, de annak ellenére, hogy egy alőző sorban aktiválom (mindegy, hogy .select vagy .activate-el) a cél munkalapot, a rows(n).select sort csak úgy fogadja el, hogy előtte a munkalapot is beírom.
Ez működik:
Worksheets("missing cost centers").Activate
Worksheets("missing cost centers").Rows(n).SelectEz nem működik:
Worksheets("missing cost centers").Activate
Rows(n).Select (Rows(CStr(n) & ":" & CStr(n)).Select -el sem)A makrót ugyan a forrás munkalaphoz hoztam létre, de ha ez a baj, akkor sem értem a hibaüzenetet. Ha a cél munkalap aktiválása a sor kiválasztás sorra már nem hat, akkor miért nem választja ki az n. sort az anya-(forrás)munkalapon???
Úgy látszik itt még bőven van mit megtanulni a hivatkozásokról, mert a hétköznapi logika alapján ez elég katyvasz.
Egyébként kösz a tippeket, a cellánkénti másolás és a képernyőfrissítés kikapcsolása is hasznomra lesz még.

Derűs, dolgos munkanapot
Szia!
"A makrót ugyan a forrás munkalaphoz hoztam létre..."
Szerintem ezzel is lehet gond. Csinálj egy modult és másold át abba a makródat. Egy próbát megér.Közben rájöttem, hogy balgaságot írtam.

A Rows nem csak Stringet hanem integert is el kellene hogy fogadjon, tehát a
Rows("2:2").select-nek ugyan úgy működnie kéne mint a Rows(2)-nek.
Bocs.
-
Homer
tag
sziasztok,
én is most teszem kezdőlépéseimet vba-ban. és nem szeret engem. se.egy óriási adathalmaz adott feltétel alapján kiválasztott sorát szeretném egy másik munkalap, változóban (n) tárolt számú sorába másolni. kreáltam is egy kódot.
Do
Sheets("tools in SAP 3100").Activate 'forrás munkalapIf Cells(i, 14) = "#Hiányzik" Then
Rows(i).Select ' átmásolandó sor
Selection.Copy
Sheets("missing cost centers").Select 'cél munkalap
Rows(n).Select 'ezen a ponton kiakad, Application-defined or object defined error üzenettel Hibakód:1004
ActiveSheet.rows(n).Paste
n = n + 1End If
i = i + 1Loop Until Cells(i, 1) = ""
sajnos a hibakód helpjét elolvasva sem kaptam a leghalványabb utalást sem hogy mi a nyűgje. két sorral feljebb pedig ugyanez az utasítás működik.
van valakinek ötlete, hogy miért nem vagyunk barátok?
előre is kösz,
derűs, dolgos munkanapotHa tudod a sorok számát akkor még ehhez hasonlóval is próbálkozhatsz:
For Each elem In Range("A1:A10")
MsgBox (elem.Text)
Next -
Homer
tag
sziasztok,
én is most teszem kezdőlépéseimet vba-ban. és nem szeret engem. se.egy óriási adathalmaz adott feltétel alapján kiválasztott sorát szeretném egy másik munkalap, változóban (n) tárolt számú sorába másolni. kreáltam is egy kódot.
Do
Sheets("tools in SAP 3100").Activate 'forrás munkalapIf Cells(i, 14) = "#Hiányzik" Then
Rows(i).Select ' átmásolandó sor
Selection.Copy
Sheets("missing cost centers").Select 'cél munkalap
Rows(n).Select 'ezen a ponton kiakad, Application-defined or object defined error üzenettel Hibakód:1004
ActiveSheet.rows(n).Paste
n = n + 1End If
i = i + 1Loop Until Cells(i, 1) = ""
sajnos a hibakód helpjét elolvasva sem kaptam a leghalványabb utalást sem hogy mi a nyűgje. két sorral feljebb pedig ugyanez az utasítás működik.
van valakinek ötlete, hogy miért nem vagyunk barátok?
előre is kösz,
derűs, dolgos munkanapotSzia!
Ha tudod a sorok számát akkor:Sub Akarmi()
Worksheets(1).Select
Dim ujsor As Integer
ujsor = 1
For Index = 1 To 10
Rows(CStr(Index) & ":" & CStr(Index)).Select
If Cells(Index, 2).Text <> "#HIÁNYZIK" Then
Selection.Copy
Worksheets(2).Select
Rows(CStr(ujsor) & ":" & CStr(ujsor)).Select
ActiveSheet.Paste
Worksheets(1).Select
ujsor = ujsor + 1
End If
Next Index
End SubEgyébként én cellánként másolgatnám az értékeket anélkül, hogy mindig kijelölgetném a második worksheetet valahogy így:
Ha a vizsgált cella értéke megfelelő akkor
Worksheets(2).Cells(XY).text=worksheets(1).cells(ZY).text
(Sokkal gyorsabb lesz afutása a makrónak, és nem vibrál a kép futás közben
)Jah, bocs, elfelejtettem írni, hogy az a baj, hogy a sor kijelölésének formája:
Rows("1:1").select
Ebből gondolom látod mi a gond: String paramétert várna a rows sub
Remélem segítettem
-
Homer
tag
Listview-ból törlés:
ListView1.Items.Remove(RowNum) - ahol rownum a listview selecteditem-je
Ha a fenti törlés megy, talán a legáltalánosabb megoldás, hogy a maradék listview elemekből csinálsz egy új kollekciót, a régi kollekciót meg letörlöd.
Kár, hogy nem árultad el, hogy mi is a feladat pontosan, mert így marad a hülye kérdésre hülye válasz játék. Azért remélem a fentiekkel tudtam segíteni.
Ne haragudj meg, de nem szeretném elárulni pontosan mi a feladat, és szerintem nem is az a fórumozás célja, hogy más oldja meg helyettünk a feladatot. Ezért kérdeztem általánosságban. Így lesz véleményem szerint a legtöbb fórumozó számára hasznos az általad javasolt megoldás is.
Egyébként köszönöm a hsz-edet! A listview-ból való törlés valóban egyszerű megoldás lenne, csak szerintem nem túl elegáns ilyenkor újraépíteni a kollekciót.
Mivel a kollekció elemeire csak az indexükkel lehet hivatkozni, az okozta a gondot, hogy a névsorba rendezett lista indexei összekeveredhetnek az eredeti kollekció indexeihez képest. A megoldást közben én is megtaláltam (pár órás próbálkozással rájöttem), hogy a collection elemeire lehet key-el is hivatkozni. Mivel a key sem visszakereshető programból, (így a listview feltöltésekor sem tudom átadni az adott elem key-jét), a kollekció minden objektumához hozzárendeltem egy-egy key integert. Ezt a key-t átadva a kollekció remove metódusának törölhető a kívánt elem.
-
Homer
tag
Itt ma senki nem tud értelmesen beszélni? Az előbb egy emberke betett ide egy rakás kódot, de nem kért semmit, aztán meg írta, hogy tárgytalan, sosem fogjuk megtudni mit szeretett volna.

Most jössz te, beömlesztesz ide egy rakás információt, csak éppen az nem derül ki, hogy mit is akarsz.
Tanuljunk már meg kérdezni, és válasszuk már el a lényeget a lényegtelentől. Első körben csak erre válaszolj 1-2 mondatban:
MI A FELADAT? Mit akarsz csinálni?
Nem érdekel a listview-d, nem érdekelnek a collection-ök rokoni kapcsolatai. Azt mondd meg, hogy mi az alap felállás, mit szeretnél megoldani a programoddal?Az a kérdés, hogy:
Ha egy kollekció elemeit listview-ban jelenítem meg akkor az egér jobb klikk-jére megjenő törlés menüponttal hogyan tudom kitörölni a kollekció megfelelő elemét?Egyébként a kérdőjel azt jelenti a mondat végén, hogy az egy kérdés lenne. A fenti hsz-ben pedig:
"A kérdésem az lenne, hogy az ily módon feltöltött listview-ból hogyan tudom visszanyerni az eredeti objektum "helyét" a kollekcióban?"
-
Homer
tag
Sziasztok!
Még csak a szárnyaimat bontogatom programozás terén, és nem is ez a szakterületem, de a munkám során néha jól jönne némi programozástechnikai ismeret, ezért vágtam bele a fejszémet a VB-be. Egy olyan dolgot szertnék kérdezni tőletek amire nem konkrét forráskódot várnék megoldásként, inkább az elméleti háttere érdekelne a dolognak.Adott egy collection amiben kétféle adattípusú adatot tárolnék. Az egyik féle osztályból (kereszteljük őket mondjuk "A-típus"-ra) létrehozott objektum tartalmaz vagy 5-6 féle mezőt + pár eljárást és függvényt a kezelésükre. A másik osztály (fantáziadúsan, legyen mondjuk "B-típus") az A típusból van örköltetve viszont még plussz 5 adatot tartalmaznának az ebből képzett objektumok. A kétféle objektum egy kollekcióba gyűjthető, és a "TypeOf(object) Is A-típus" kifejezéssel megállapítható az adott elem mezőinek mivolta is. Ahhoz, hogy a feltöltött listát megjeleníthessem használnék egy Listview1 objektumot.
A lista elemeit fel tudom tölteni ehhez hasonló módon:
...
For each elem as object in kollekció
if typeof(elem) is Atípus then listview1.items.add(elem.mező_a)
...(elem.mező_b)
...
else
listview1...items.add(elem.méret1)
nextA kérdésem az lenne, hogy az ily módon feltöltött listview-ból hogyan tudom visszanyerni az eredeti objektum "helyét" a kollekcióban? Lehet hogy alapból rosszul gondolkodom és nem is így kéne hozzálátni a feladathoz. Már többféleképpen is próbáltam, de mindig zátonyra futok valahol. A gond akkor jelentkezik amikor kijelölök egy listaelemet és ki akarom törölni a kollekcióból. Arra gondoltam, hogy a törlési eljárásban deklarálok egy objektumot, aminek manuálisan visszatöltöm az adatmezőit és ezt az objektumot használom a beazonosításra.
így valahogy:
sub gomb1.click(...)handles gomb1.click
obj.mező1 = listview1.selecteditems(0).items.tostring
obj.mező2 = istview1.selecteditems(0).subitems(0).items.tostring
...(és így végig az összes mezőn)
...
törlés(obj)
end subsub törlés(mit as object)
kollekció.remove(mit)
end subNagy balgaságot követek el így? Van ennél egyszerűbb mód, azon kívül hogy adatbázist használnék? (Még addig nem juttotam el a könyvben :$
. Még egy dolog mielőtt valaki az index-ek használatán gondolkodna: A listview-ban emelkedő sorrendben szeretném megjeleníttetni az elemeket, ami azt eredményezi hogy pl a 100-adiknak beírt adat legelőre kerül 0-s index-el(!), viszont a kollekcióban pedig időrendi sorrend szerint vannak tárolva. Viszont ami egyszerűsíti a helyzetet az az, hogy egy objektum sem ismétlődhet a sorban.Előre is köszönöm ha valaki válaszra méltatna és megérti a kérdésemet!

-
Homer
tag
Üdv ismét! Gondoltam leírom amit azóta sikerült megtudnom. Azaz inkább azt írom le, hogy hogyan oldottam meg a feladatot. A maskedtextbox resetonspace tulajdonságának true-ra állításával a space-ekket "lekezeli a textbox". (Space inputra a maszk nem lép digitet ha azt a karaktert a maszk nem engedi, mint pl. a "0" maszk esetén.) Azonban így is gondot okozhat ha a user az arrow key-ekkel vagy egérrel elmozdítja kurzort begépelés közben. Ezt a kivételt utólag a MaskCompleted tulajdonság ellenőrzésével egyszerűen lehet kezelni.
A megoldás tehát:Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
MsgBox(MaskedTextBox1.MaskFull)
End SubPrivate Sub MaskedTextBox1_TextChanged(sender As Object, e As System.EventArgs) Handles MaskedTextBox1.TextChanged
If MaskedTextBox1.MaskCompleted Then Button1.Enabled = True Else Button1.Enabled = False
End SubA button1 így csak akkor elérhető ha teljesen ki van töltve a textbox, és oda pedig csak érvényes karaktereket (tehát space-t nem!) lehet írni. Probléma megoldva!
Köszönöm mindenkinek aki esetleg gondolkodott rajta! 
-
Homer
tag
Nah, kipróbáltam a standard maszkokkal is de azokkal sem jól működik. Valakinek valami ötlet, hozzászólás? :S
-
Homer
tag
Köszi a választ, bár nem sokat segít amit írtál. Sajna most éppen dolgozom, de ha este hazamegyek kipróbálom a predefined maskokat, hogy azok hogy viselkednek. Ha valaki kipróbálná közben írja már le a tapasztalatát és a véleményét! Köszi előre is! És... UP!

-
Homer
tag
Sziasztok!
A maskedtextbox osztállyal kapcsolatban egy érdekes dolgot tapasztaltam. Mindenkinél így működik, vagy én vagyok a láma ehhez (is)?
Szal a problémám a következő: Az MSDN szerint a maszkolásnál a 0 maszk jelentése, hogy csak egy SZÁM KARAKTERT (0...9) fogad el a box, viszont azt KÖTELEZŐ megadni. 9-es maszk esetén kellene elfogadnia a space-t és valamilyen szám digitet.Ehhez képest a 000-000 maszk simán engedi a " 1-234" vagy " - " vagy a "1 2- 3" karaktersorozatokat.
Ez miért van? Hibás az osztály, vagy az MSDN leírás róla? Esetleg valami spec Visual Studio beállítás esetén műxik csak a dolog? Amiben próbáltam: Visual Studio 2010 (Visual Basic)Előre is köszönöm ha valaki segítő szándékú válaszra méltatna!

Új hozzászólás Aktív témák
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Projektor topic
- Gaming notebook topik
- Temu
- Gumi és felni topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- A Linux megnégyszerezte magát a Steamen — a Microsoft ismét ígérget
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- A fociról könnyedén, egy baráti társaságban
- Motoros topic
- gban: Ingyen kellene, de tegnapra
- További aktív témák...
- új 0 km es garanciás lenovo loq rtx 5050 8gb
- Eladó teljesen újszerű karcmentes Samsung Galaxy Watch Ultra
- DDR4 memóriák eladóak
- Hihetetlen Gaming PC brutális specifikációkkal! A dán Topdata.dk IT-cég által összerakva
- 2.5" 100% noti HDD-k Western Digital, Seagate 320Gb (3k) +1Tb (15k) van 1db SSHD is (15k)
- Xiaomi Redmi 13C 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! AMD TR 7960X + Asus TRX50 + 128GB 6400MHz garanciával hibátlan működéssel
- Bomba ár! Lenovo TP Yoga 370 - i5-7G I 8GB I 512SSD I 13,3" FHD Touch I Cam I W11 I Gari
- Keresünk iPhone 12/ 12 Mini/ 12 Pro/12 Pro Max
- 5G Lenovo ThinkPad P14s Gen 3 Intel Core i7-1280P 16GB 1TB Nvidia T550 4GB 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


Az, hogy valaki mással (is) tölti az ebédidejét /szabad kapacitását nem jelenti azt, hogy olyan laza lenne a munkája. Én spec azért kezdtem el tanulni a VB-t, mert hasznát vettem a munkámban. Már nem egyszer fordult elő, hogy egy Excel-es feladatot VBA segítségével oldottam meg. Innen indult a programozás iránti érdeklődésem. Most ott tartok, hogy Turbo pascal megy valamennyire (ezt még egyetemen tanították), meg VB olyan alap-közép közti szinten (legalábbis itt érzem magam). Ezt már autodidakta módon tanultam.![;]](http://cdn.rios.hu/dl/s/v1.gif)

Igaz lehet ez? Van valami alternatíva? XNA vagy ilyesmi?

)
)

))

Nem értem, hogy miért, de annak ellenére, hogy egy alőző sorban aktiválom (mindegy, hogy .select vagy .activate-el) a cél munkalapot, a rows(n).select sort csak úgy fogadja el, hogy előtte a munkalapot is beírom.

