Új hozzászólás Aktív témák
-
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!
[ Szerkesztve ]
-
martonx
veterán
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?Én kérek elnézést!
-
martonx
veterán
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.
Én kérek elnézést!
-
martonx
veterán
Mi sem álljon távolabb tőlem, mint bárki más helyett megoldani a feladatot. Azért szeretem tudni az alap feladatot, mert szeretek optimális megoldásokat adni. Általában azt tapasztalom, hogy sokan kérnek tanácsot, de már az alap koncepciójuk hibás. Ilyenkor szvsz sokkal nagyobb segítség a jó úton elindítani őket, mint a rossz úton továbblökni egy lépéssel.
De ha titok, hát titokÉn kérek elnézést!
-
26centi
csendes 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
-
Baboka
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
-
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 )
-
vilag
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!
-
vilag
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ó."
-
vilag
tag
Igazából már muszáj "makrobizni", mert userformon fog történni minden, ez csak egy apró szeletet volt a dolognak. Mindössze enélkül nem lett volna értelme folytatni, mert később újra kellett volna írnom az egészet.
A megoldás ez lett (bár gondolom az előzőekből nektek ez már nemigen lesz újdonság):
név = Application.WorksheetFunction.Match("Név", ThisWorkbook.Sheets("gtorzs").Range("1:1"), 0)Listboxal kapcsolatban viszont lenne egy érdekes kérdésem, amelyre eddig önerőből nem találtam választ.
A listbox ugye egy kijelölt excel tartományt "mutat meg". Azt viszont, hogyan lehet megoldani, hogy az egyesített cellák is egyesítettként jelenjenek meg benne?Pl. excel táblában van nekem egy fejléc oszlopom ami viselje pl a következő nevet: "Születési dátum", viszont ez három oszlop (év, hónap, nap) fejléce. A listboxban viszont úgy jelenik meg, hogy az év oszlop felett van a "Születési dátum", a másik kettő felett pedig üres cella (elválasztó vonallal mindennel együtt).
Ötlet?
-
martonx
veterán
ú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.Én kérek elnézést!
-
ArchElf
addikt
Neked lehet, hogy mindegy hogy VB6, vagy VB.NET, de sem technológia, sem környezet, sem terminológia szempontjából nem mindegy.
Azaz, ha neked mindegy, akkor VB.NET...AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
ArchElf
addikt
Nem, nincs Access-hez ADO.NET csatoló. Amit tudsz esetleg csinálni, hogy felhúzol egy SQL Server Express-t és becsatolod az Access adatbázist, mint külső adatforrást (JET/OLE). Ha helyi fájl kell, használj inkább SQL adatfájlokat (mdf) vagy SQLite-ot.
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
martonx
veterán
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.Én kérek elnézést!
-
martonx
veterán
Érteni véllek, és szerintem ez alapján egyrészt erősen túlbonyolítod a dolgot.
Másrészt ez itt egy VB szakmai topik, aminek nem feladata programozni tanítani, programozás technikákat, design patterneket, DB séma módszertanokat oktatnia.
Mivel rendes, értelmes tagnak látszol, privátban, mailben szívesen segítek, amikor időm engedi. Egyébként jó nyomon jársz, próbálgatásokkal tudod csiszolni a tudásodat.Én kérek elnézést!
-
himre82
csendes 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.
-
ArchElf
addikt
Ha munkaállomás - és egyszerre egy felhasználós -, akkor szerintem az sqli a legegyszerűbb (ha nem kellenek bonyolult adattípusok és "fejlett" sql szerkezetek).
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Homer
tag
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?[ Szerkesztve ]
-
martonx
veterán
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.Én kérek elnézést!
-
martonx
veterán
Pedig szerintem jól értettelek. Valamit nagyon elbonyolítasz. Form2-n akarod az új adatokat felvenni. Hát vedd fel, mentsd le és kész!
Mi a probléma? Még mindig nem értem, miért Form1-ről vársz ehhez adatokat, és miért akarsz bármit is visszaadni neki? Ne adatsorokat akarjál ide oda adogatni, azért van az adatbázis, hogy elmentsd bele az adatokat. Illetve azért van a datasource, hogy abban mókoljál mindkét formmal.Én kérek elnézést!
-
martonx
veterán
Ja és még pár adalék a hsz-edhez. Jó dolog, hogy önképzed magad, ezért is szólok, hogy a winforms, meg úgy általában minden vastag kliens-es megoldás, mára kiment a divatból. Ahogy ezt már írtam, azért nem találasz a témához rendes tutorialokat, mert jó pár éve nem fejleszt winforms-ban senki, hacsak nem muszáj neki (mondjuk speciális perifériák kezelése miatt). Épp a zárójeles rész miatt meghalni soha nem fog a winforms (bár én akkor is inkább wpf-ben gondolkoznék így 2013-ban), de a supportja mára tényleg pusztán névleges.
Ha tanulni akarsz, és bejön az MS vonal, és ebben szeretnél elhelyezkedni, akkor válts ASP.NET-re (webforms, mvc, webpages).Ugyanez a helyzet a VB.NET-tel. Válts C#-ra helyette.
És hidd el vagyunk itt páran, akik csináltunk pár vastag klienses programot, én pl. 2009-ig.
Én kérek elnézést!
-
martonx
veterán
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.Én kérek elnézést!
-
martonx
veterán
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
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.
Én kérek elnézést!
-
martonx
veterán
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.Én kérek elnézést!
-
martonx
veterán
-
vilag
tag
Így indult ez nálam is.
Mikor idekerültem egy (pontosabban több is) VBA-val megbolondított excel táblát kellett használnom bizonyos munkákra.Mikor beletanultam láttam, hogy vannak hiányosságai, gyermekbetegségei, vagy éppen csak változtatni kellett valamit. Ilyenkor mindig a kollégát kellett "zaklatnom", aki írta a programot. Olyankor ott ültem mellette és kérdezgettem, hogy ez miért így, meg mért nem úgy, ez mire való, nem lehetne esetleg ezt így megcsinálni, stb.
Később más munkáim megkönnyítésére elkezdtem magamtól programozni, ha elakadtam (ami persze az elején elég sokszor előfordult) csak akkor kérdeztem a kollégámat, ha meg már ő sem tudott megoldást kínálni vagy találni, akkor írtam ide.Ez mára oda jutott, hogy a legnagyobb projekt most kb. ötezer soros, de mindig valami apró cseprő, vagy (most éppen) nagy volumenű javításon, kiegészítésen dolgozom ha van idő. (Évi átlag 2.000 ügyirat ezzel készül a hivatalnál , szóval úgy érzem volt értelme eltölteni vele az időt.
Több más mellett írtunk egy olyan programot is amire igen büszke vagyok, mert sikerült vele felváltani a sz*r papír alapú postakönyvet is, de persze egy sima postakönyvtől sokkal többet tud
Mondjuk én azért még így is inkább a kezdő szintre lőném be magam, tekintve, hogy rengeteget kell kérdeznem tőletek, meg látva, hogy mennyi olyan VBA elem van a súgóban amiről még csak lövésem sincs mire való.
Új hozzászólás Aktív témák
- Dragon Age: Origins
- sh4d0w: Rebel Moon - Ne nézd meg!
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Bambu Lab X1/X1C, P1P-P1S és A1 mini tulajok
- Musk szerint már jövőre itt vannak a Tesla Optimus humanoid robotok
- Hálózati / IP kamera
- Filmvilág
- Redmi Note 13 5G - fogyókúra után
- exHWSW - Értünk mindenhez IS
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- További aktív témák...
- Asus ROG Phone 6 - Limited Batman Edition / BONTATLAN - 3 év gari
- Huawei Matebook D14 i5-11.gen/16GB DDR4/512GB PCIe SSD/14" Full HD IPS/Gar.:2025.10
- Rog 4070 Ti //KERESEM!!//
- Binepad BN006, programozható, mechanikus macropad, low profile Kailh Choc v1 Red switchek
- CoolerMaster ControlPad, programozható, mechanikus macropad, Gateron Red switchek