Új hozzászólás Aktív témák
-
vilag
tag
válasz martonx #1700 üzenetére
Szia!
A vezérlők valóban rá vannak kötve egy egy excel cellára, de nem azonnali hatállyal. A kiírás csak egy gomb megnyomása (és a megfelelő ellenőrzések futtatása) után történik meg.
Nem tudom ez változtat e a nézőpontodon valamit.A többi kérdésben esetleg tudsz segíteni? (Előbbi hozzászólásom)
Üdv, vilag
-
martonx
veterán
form bezárás:
Private Sub CommandButton1_Click()
Unload Me
End SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End SubJól sejtettem, hogy a vezérlők rá vannak kötve cellára
Ez a nem azonnali hatály, nem túl biztató, immár tuti, hogy itt lesz a hiba.Én kérek elnézést!
-
EkSYS
senior tag
Sziasztok!
Van valakinek egy jól működő dátum szűrője (date filter)?
Jó pár verziót megpróbáltam de mindig ugyanaz lett a vége: nem szűrtDim MyDate
MyDate = Format(DateSerial(2012, 3, 13), "éééé.hh.nn")
ActiveSheet.AutoFilterMode = False
Range("A1").AutoFilter
Range("A1").AutoFilter Field:=1, Criteria1:=MyDate
valakinek valami ötlet?
Eki - az eredeti
-
-
vilag
tag
válasz martonx #1702 üzenetére
Nagyon szépen köszönöm a megoldást!!!! Ezzel sok bonyodalomtól mentettél meg!
Pedig mennyi féle megoldást kipróbáltunk mielőtt megkérdeztem....
A biztonsági beállításokban nem tudsz esetles segíteni?
A futkározással kapcsolatban annyit, hogy rendben, hogy működik a dolog hogy ki kell kapcsolni az automatikus újraszámolást, de szeretném megérteni a dolog miértjét.
Szóval miért van ez így? Mi az oka?
-
martonx
veterán
Ez esetben erre van szükséged:
Dim lDate As Long
Dim dDate As Date
dDate = DateSerial(2011, 3, 12)
lDate = dDate
ActiveSheet.Range("$A$1:$A$4").AutoFilter Field:=1, Criteria1:= ">" & lDateA dátumot átalakítjuk long-gá, és ezzel megbízhatóan működik mindenféle dátumszűrés.
Én kérek elnézést!
-
martonx
veterán
Biztonsági beállításokban nem tudok segíteni. Amit írtál, és ha jól értettem, ilyen eset nem fordulhat elő, csak direkt felhasználói átállításkor.
A miértjét már ezerszer leírtam. A combobx rá van kötve a cellára. Amikor a cella értéke változik, a combobx értéke is változik, azaz lefut a change esemény. Tényleg ennyire nem lehet felfogni?
Én kérek elnézést!
-
vilag
tag
válasz martonx #1710 üzenetére
Az addig világos is (eddig is az volt), hogy amikor az adott vezérlőhöz kötött cella értéke megváltozik akkor annak a change lefut. Ez eddig sem volt kérdés. Viszont ez a change lefut ha kell hanem, minden egyes alkalommal amikor valamelyik másik vezérlő értékének a kiírása történik, sőt ennek a vezérlőnek semmi köze az egészhez.
[ Szerkesztve ]
-
EkSYS
senior tag
Sziasztok !
Találkozott már valaki a 2029-es hibával?
Nálam most jött elő először és nem tudom hogyan lehetne megoldani. Röviden.
Adott egy xls. amiben van több munkalap. az egyikben az egyik oszlop tartalmát szétszedem (9 oszlopra), majd kikopziok 7-et és átmásolom egy másik munkalapra ahol beszúrom A-tól. J-ig, és J től megint jönnek oszlopok, de az már máshonnan.
A feladat egyszerű összehasonlítgatós /keresős adott feltétel rendszer alapján.
A keresés A - F oszloptartományban zajlik. Ma kiderült a H I -ben is kell, átírtam a keresős algoritmust, és amikor ebbe a két új oszlopba kéne nyúlnia kiáll type mismatch-csal error 2029 (megnéztem a neten, de erre nem találtam megoldást)
valakinek ötlet?Eki - az eredeti
-
Oly
senior tag
Sziasztok
Van egy Excel makróm, ami új outlook levelet kreál.
A feladót a SentOnBehalfOfName-mel adtam meg.
Excelből hibátlanul megy még a 2010--es Outlookkal is.
Most kitaláltam, hogy futtatható EXE-t csinálok belőle. Így viszont nem működik a feladó beállítása.
HTML-be illesztve sem hajlandó a 2010-es Outlookkal a feladót beállítani.
Mi lehet a gond?
SonyEricsson T20 - T68 - T610 - K700 - W800 - K750 - K800 - C702 - P1 - MOTO Defy - Galaxy S Advance - Galaxy S4 - Lumia 820 - Honor 7 - iPhone 5S
-
Oly
senior tag
válasz martonx #1720 üzenetére
Visual Studio 6.0-ban csináltam meg a Form-ot.
Nagyon nem értek hozzá... Csak úgy magamtól kezdtem el az Excelt programozgatni...
HTML-be is átültettem a scriptet, de ott is ugyanúgy "működik".
Csak a saját nevem alól tudom küldeni.[ Szerkesztve ]
SonyEricsson T20 - T68 - T610 - K700 - W800 - K750 - K800 - C702 - P1 - MOTO Defy - Galaxy S Advance - Galaxy S4 - Lumia 820 - Honor 7 - iPhone 5S
-
ArchElf
addikt
A VBS (VB Script), a VBA (VB for Applications) és a VB6 szintaktikailag (és a használt metódusok, osztályok alapján is) nagyon hasonló - de nem teljes mértékben átjárható. Ha teszel fel példát, talán megtaláljuk, miért nem megy.
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]
-
Oly
senior tag
válasz ArchElf #1722 üzenetére
Szia
Private Sub Command1_Click()
Dim objOutlook, objMail, oAddSig
Set objOutlook = CreateObject("Outlook.Application")
objOutlook.Session.Logon
Set objMail = objOutlook.CreateItem(olMailItem)
Set objOutlook = objMail.GetInspector
With objMail
.SentOnBehalfOfName = "nemazennevem@valami.hu"
.To = "to"
.Cc = "cc"
.Subject = "Subject"
.Body = "body"
.Display
End With
Set objOutlook = Nothing
Set objMail = Nothing
End SubOutlook2007-nél átírja a feladót, Excelből indítva 2010-nél is.
HTML-ből, vagy VB6-tal csinált exe-nél már nem.
2010-nél egy lenyíló listából tudom kiválasztani az eddig használt feladókat. Lehet, hogy itt valami objektumként kezeli már?SonyEricsson T20 - T68 - T610 - K700 - W800 - K750 - K800 - C702 - P1 - MOTO Defy - Galaxy S Advance - Galaxy S4 - Lumia 820 - Honor 7 - iPhone 5S
-
ArchElf
addikt
Úgy rémlik, hogy az automata üzenetküldö férgek letöréséért a nem Office-ból meghívott Outlook objektumok nem tudnak automatikusan levelt küldeni. Van valami registry beállítás (vagy group/local policy elem), amin keresztül ezt lehet engedélyezni. De nagyon rég volt már amikor ezzel szmbekerültem (6-7 éve), szóval egy kis googlizásba belekerül, mire megtalálom...
Esetleg próbáld meg C# (.NET) alkalmazással...
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
válasz ArchElf #1724 üzenetére
MS oldala csak Office 2003-ig írja a támogatást - lehet, hogy Office-on kívül már nem működik... Passz.
És még ezt találtam.
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]
-
wikings2
őstag
Szevasztok. Egy szerintem nektek pofon egyszerű feladatra kérnék segítséget.
Van egy forrás txt formátumban amihez szimplán csinálok egy FileStreamet meg egy StreamReadert szal megnyitom.Dim v(20, 2) As Integer
For i = 1 To 20
WriteLine(i & ". sorszám")
v(i, 1) = ReadLine()
Next
For n = 1 To 20
WriteLine(n & " név:")
v(n, 2) = ReadLine()
Next
ReadKey()Na most valami hasonló ciklussal szeretném belőle az adatokat beolvasni különböző rekordokba.
A gond az hogy nem tudom hogy hogy kéne megoldani azt hogy:A txt belseje:
342342342301 (dátum)
pista béla (hozzá tartozó név)
21312312312
janjó ferenc
.
.
.Akkor ha egy sorban lenne szimplán valamilyen stringtöréssel szétkapnám és mehetnének külön, de így ilyen formában erre sajnos nem tudok ciklust, hogy egymás mellé kerüljenek az összetartozó rekordok :\
Ha valaki tudna rá valami egyszerű módszert akkor megköszönném emiatt b.szom el sorra az emeltszintű programozási feladatokat mert nem sikerül értelmesen beolvasni.
Köszi!Talán én is Pest vagyok... Pest a pestiségem. Pest,hogy rég Pesten lakok, s nem lettem pesti mégsem.
-
-
martonx
veterán
válasz wikings2 #1728 üzenetére
Nem fogom helyetted megírni a programot. Azt látom, hogy beolvasni betudsz a fájlból. Ez esetben miért nem tudod leellenőrzni, hogy az adott sor számmal kezdődik-e?
Vagy másik lehetőség, hogy minden második sort másként kezelsz. Gondolom ezt is meg tudnád oldani.Én kérek elnézést!
-
wikings2
őstag
válasz martonx #1729 üzenetére
1 éve "tanulom" autodidakta módon mivel az infó tanárom egy seggfej és előre megoldott programokat kommentel ki és magyaráz el. Na most egy előre megírt programról nekem is lesül, hogy mi hogy megy, de magamtól új feladatot megoldani elég nehéz úgy hogy kb 4 séma van a fejemben.
A sorok külön kezelése érdekelne igazából. Valami olyasmire gondoltam hogy 2*n és 2*n+1 edik tagonként olvasnám be őket (de hogy hogy az jókérdés ) ,de eléggé hiányos a háttértudásom hozzá.Talán én is Pest vagyok... Pest a pestiségem. Pest,hogy rég Pesten lakok, s nem lettem pesti mégsem.
-
wikings2
őstag
válasz martonx #1731 üzenetére
Nem kész kódot, csak valami struktúrát, amire lehet ilyen típusú feladatokat építeni és tudom hogy valami logika is van benne, mert mondjuk itt elég sok szaki van aki eltudná magyarázni hogy mit hogy csináljak meg.
Nem lenne bajom ezzel mert ha leülnék és napokat gondolkodnék rajta biztos kitalálnék valamit rá, de az emelt érettségin lesz kb 45 percem erre a részére a feladatsornak és ezért próbálom típus szerint begyakorolni a feladatokat. Ha a beolvasás megvan utána az ilyen a már beolvasott adatbázisban keresgélő és sorba rakó feladatokkal már nincs bajom.Talán én is Pest vagyok... Pest a pestiségem. Pest,hogy rég Pesten lakok, s nem lettem pesti mégsem.
-
ArchElf
addikt
válasz wikings2 #1732 üzenetére
(félig) pszeudokódként:
public struct Adatok
{
public Date datom;
public String nev;
}
// ...
List<Adatok> adatlista = new List<Adatok>();
while( not eof )
{
Adatok adat = new Adatok();
a.datum = Date.Parse(sr.Readline());
a.nev = sr.Readline();
adatlista.Add(adat);
}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]
-
Oly
senior tag
Sziasztok.
Van arra lehetőség, hogy Visual Basic 6.0-ban olyan programot csináljak, ami az egér kurzort egy megadott helyre mozgatja és ott kattint?
Van egy elég monoton munkafolyamatom, ahol a monitor adott pontjaira kattingatok.
Már fáj a csuklóm.
Arra gondoltam, hogy csinálok egy olyan makrót, vagy akár VB6-os programot, ahol csak egy helyre kattingatok, és az előre megadott kordinátákra viszi az egeret, kattint, majd vissza az egér (hogy tudjak újra kattintani...).Nézegettem angol fórumokat, de nem nagyon értettem.
Előre is köszi.
SonyEricsson T20 - T68 - T610 - K700 - W800 - K750 - K800 - C702 - P1 - MOTO Defy - Galaxy S Advance - Galaxy S4 - Lumia 820 - Honor 7 - iPhone 5S
-
#90999040
törölt tag
Van rá lehetőség, winapi mouse_event(), vagy SendInput() függvényével.
A mouse_event() használata egyszerűbb, de a MS már új fejlesztésekhez nem ajánlja. A SendInput() bonyolultabb, de ezzel pl. billentyűlenyomást is lehet generálni, és a MS ezt ajánlja inkább...
-
EkSYS
senior tag
Sziasztok!
Érdekes problémával találkoztam, s nem tudom mi a megoldás:
Adott egy leltári kivét forma. Az első kombó ami be is van pipálva gyakorlatilag beadja az összes alkatrészgyártót. Majd a nagy kombó ami le is van gördítve meg kiadja minden olyan tétel típusát ami az első kombóban kiválasztott értéknek megfelel. Egyszerű. Ehhez az alábbi megoldásokat használtam:
1.kombó betöltése:
Do While Worksheets("alkresz").Range("A" & sor2).Value <> ""
sor2 = sor2 + 1
leltar1.ComboBox2.AddItem Worksheets("leltarpivo").Range("I" & sor2).Value
Loop
sor2 = sor2 - 1
Worksheets("alkresz").ActivateMajd betöltöm a nagy kombót:
Public Sub alkatcombo5toltes()
Dim sor As Integer
Dim xkeres(1 To 10) As String
xkeres1 = ""
xkeres2 = ""
sor = 2If leltar1.CheckBox1.Value = True Then
xkeres1 = leltar1.ComboBox1.Value
Else
End IfIf leltar1.CheckBox2.Value = True Then
xkeres2 = leltar1.ComboBox2.Value
Else
End Ifleltar1.ComboBox5.Clear
Do While Worksheets("alkresz").Range("A" & sor).Value <> ""
'PME
If Worksheets("alkresz").Range("I" & sor).Value = xkeres1 Then
leltar1.ComboBox5.AddItem Worksheets("alkresz").Range("E" & sor).Value
'Alk.gyártó
ElseIf Worksheets("alkresz").Range("H" & sor).Value = xkeres2 Then
leltar1.ComboBox5.AddItem Worksheets("alkresz").Range("E" & sor).ValueEnd If
sor = sor + 1Loop
A probléma az hogy a képen látható a nagy kombóban kiválasztott érték a helyes, csakis az a másik 3 nem. De az mindig benne marad. mindent szépen megtalál, csak ez a nyomorult 3 marad bent mindig.
Valakinek hasonló tapasztalata? Ötlete?Eki - az eredeti
-
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!
-
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!
-
Homer
tag
válasz martonx #1741 üzenetére
:$
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! -
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!
-
Homer
tag
válasz martonx #1747 üzenetére
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
válasz martonx #1749 üzenetére
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.[ Szerkesztve ]