Hirdetés

2024. május 3., péntek

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Visual Basic

Hozzászólások

(#2751) vilag válasza vilag (#2750) üzenetére


vilag
tag

Itt találtam:
[link]

[ Szerkesztve ]

(#2752) sztanozs válasza vilag (#2751) üzenetére


sztanozs
veterán

Inkább vbscripttel csinálnám - az nem ennyire túlbonyolított: [link]

Persze admin jog kell mind a két megoldáshoz, nem lehet ez a gond nálad?

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2753) vilag válasza sztanozs (#2752) üzenetére


vilag
tag

Először is köszönöm a választ!

Röviden: ebben a programban userformon töltött adatokból ügyirat generálható (természetesen különböző vizsgálatok, szabályok futkorásznak).
A lényeg az lenne, hogy a már korábban itt közzétett vonalkódos programrésszel elkészül egy vonalkód amit most már szeretnék rá is nyomtatni az ügyiratra. Eddig nem került rányomtatásra az ügyiratra.
Az ügyirat releváns adatai (a vonalkód által fedett számot is beleértve) egy ideiglenes fájlban tárolódik is.

Ennek oka az, hogy az általam írt postakönyvbe, így a postázást végző kollegina a szám bepötyörészését követően a szükséges adatokat importálja a postakönyvbe, így neki nem kell még egyszer a szükséges adatokat felvinnie.
A vonalkód rányomtatása pedig azt a célt szolgálná, hogy a számsor begépelésétől is megkíméljem.

A szépséghiba ugye ott van, hogy ehhez a szükséges betűtípusnak telepítve kell lennie azon a gépen amelyről az ügyirat nyomtatódik.

Mivel nem önálló program lenne, hanem a már meglévő programba kerülne beépítésre, mindenképpen Visual Basices megoldást keresek.

A rendszergazdai jogosultság elméletileg nem gond.

Először olyanban gondolkodtam, hogy csak vizsgálja meg, hogy jelen van-e a szükséges betűtípus és ha nem akkor adjon egy rövid figyelmeztetést és egy telepítési útmutatót, majd indítsa el a betűtípus fájlt, hogy a felhasználó telepíteni tudja, de sajnos ez sem vált be, mert nem volt hajlandó elindítani a fájlt.

Addig eljutottam, hogy followhyperlink-el meghívtam a fájlt, kaptam is gyári hibaüzenetet, hogy egyes fájlok megnyitása veszélyes lehet, de a fájl mégsem indult el.

Na meg persze sokkal elegánsabb (és biztosabb) lenne, ha mindez a felhasználó (tudta és) beavatkozása nélkül történne, tudjuk az hová vezethet...

Mindent figyelembe véve kérlek téged/titeket, hogy visual basic segítségével próbáljuk meg megoldani a problémát.

Egyszerűen nem értem, hogy mi lehet a probléma.

Bár ezeket nem értem:

Declare Function WriteProfileString Lib "Kernel" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String) As Integer
Declare Function CreateScalableFontResource% Lib "GDI" (ByVal fHidden%, ByVal lpszResourceFile$, ByVal lpszFontFile$, ByVal lpszCurrentPath$)
Declare Function AddFontResource Lib "GDI" (ByVal lpFileName As Any) As Integer
Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long

(...)

FontRes$ = Left$(FontPath$, Len(FontPath$) - 3) + "FOT"

Ret% = CreateScalableFontResource(0, FontRes$, FontFileName$, WinSysDir$)

Nem tudom mire jó az, hogy "ttf" kiterjesztés helyett "FOT" kiterjesztést ad (vagy virtuálisan ad) a fájlnak.

(#2754) sztanozs válasza vilag (#2753) üzenetére


sztanozs
veterán

Szerintem felesleges Windows API-val küzdeni...

VBS simán átültethető VBA-ba:
Public Sub InstallFont()
Dim objShell As Object ' Shell
Dim objFolder As Object ' Folder
Dim objFSO As Object
Dim srcFolder, srcFile

'Ide kell a Font forrás könyvtára
srcFolder = "\\networkserver\sharedfolder\publicfonts"

'Ide kell a font file neve
srcFile = "code128.ttf"

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(srcFolder)
Set objFSO = CreateObject("Scripting.Filesystemobject")

If Not objFSO.FileExists("C:\Windows\Fonts\" & srcFile) Then
Dim objFolderItem As Object ' FolderItem
Set objFolderItem = objFolder.ParseName(srcFile)
On Error Resume Next
objFolderItem.InvokeVerb "Install"
If Err Then
Debug.Print Err.Description
Err.Clear
End If
On Error GoTo 0
Set objFolderItem = Nothing
End If
Set objFSO = Nothing
Set objFolder = Nothing
Set objShell = Nothing

End Sub

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2755) vilag válasza sztanozs (#2754) üzenetére


vilag
tag

Nagyon, nagyon szépen köszönöm!

Némi küzdés után teszi a dolgát ahogy kell (a küzdés persze az én hibámból volt).

Teszteltem egy-két gépen és amelyiken nem szükséges rendszergazda jog ott gyönyörűen teszi a dolgát.

Ahol azonban nincs telepítési jog ott:

XP esetén: látszólagosan nem történik semmi.
Win7 esetén: feljön az ablak, hogy adjam meg a rendszergazda felhasználónevét és jelszavát a telepítéshez.

1. A kérdésem az lenne, hogy meg lehet-e valahogyan esetleg oldani, hogy a felhasználónév és jelszó megadása kódból történjen? (hátha a rendszergazda ideadja az adatait)

2. Le lehet-e kérdezni, hogy az adott felhasználó rendelkezik-e rendszergazdai (telepítési) joggal? A környezeti változókban (ENVIRON) nem találtam ilyet...
Utóbbira azért lenne szükség, hogy ha az első verzió valamilyen okból (esetleges jelszócsere pl.) nem működne.

(#2756) sztanozs válasza vilag (#2755) üzenetére


sztanozs
veterán

Ezzel le tudod kérdezni a memberhip-et:
Function IsMember(userDomain As String, userName As String, groupDomain As String, groupName As String) As Boolean
Dim grp As Object
Dim grpPath As String, userPath As String

grpPath = "WinNT://" & groupDomain & "/" & groupName
Set grp = GetObject(grpPath & ",group")

userPath = "WinNT://" & userDomain & "/" & userName
IsMember = grp.IsMember(userPath)
End Function

Így hívd meg (angol windows-on - magyaron ugye más az Admin Group neve):
IsMember(Environ("userdomain"), Environ("username"), ".", "Administrators")

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2757) vilag válasza sztanozs (#2756) üzenetére


vilag
tag

Köszönöm szépen!

Hétfőn első dolgom lesz, hogy megpróbáljam átültetni a gyakorlatba.

Üdv, vilag

(#2758) vilag válasza sztanozs (#2756) üzenetére


vilag
tag

Köszönöm!

Működik a lekérdezés.
Annyit kellett tenni, hogy az "Administrators"-ot "Rendszergazdák"-ra kellett cserélni.

Visszatéréskor True értéket adott, persze most véletlenül sem találtam olyan felhasználót aki nem admin joggal van :)

(#2759) vilag


vilag
tag

Sziasztok!

Egy apró ám annál idegesítőbb problémával állok szemben ami inkább esztétikai jellegű mintsem funkcionális probléma.

Írtam én egy postakönyv programot, ami évek óta hűségesen szolgálja a hivatal működését idestova 7. éve.

A lényeg: a program gombnyomásra szűrést hajt végre a megadott paraméterek alapján, azaz legyűjti azokat a sorokat amelyek tartalmazzák a megadott karaktersort.

A probléma az, hogy az utolsó sorban az alsó rácsvonalak egy része (az első oszlopot kivéve) eltűnik és nem tudok rájönni miért.

Már próbáltam a kódba is beletenni a rácsozást, de nem vált be.
Marhára idegesítő probléma, van valakinek ötlete hol lehet a hiba?

Alább egy kép a probléma szemléltetésére:

(#2760) sztanozs válasza vilag (#2759) üzenetére


sztanozs
veterán

Szerintem, ha az utolsó utáni sor felső borderjét beállítod, akkor szűrés után is "ott marad".

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2761) vilag válasza sztanozs (#2760) üzenetére


vilag
tag

Az az érdekes, hogy ha megnézed a képet, az első oszlopban jó az alsó border (mondjuk ott történik egy automatikus sorszámozás).

A probléma egyébként akkor keletkezett amikor Win Xp-s (Office 2003) gépekről Win7-es (Office 2007) gépekre tértünk át.

Egyébként kódból már próbáltam ezt megoldani:
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft) 'Bal
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop) 'Felső
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom) 'Alsó
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight) 'Jobb
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical) 'Belső függőleges
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

De nem hozta a várt eredményt, szóval lehet még valahol valami turpisság a dologban.

(#2762) Delila_1 válasza vilag (#2761) üzenetére


Delila_1
veterán

Elég ennyi:

With Selection
.BorderAround LineStyle:=xlContinuous, Weight:=xlThin 'körbe
.Borders(xlInsideVertical).Weight = xlThin 'belső függőleges
End Wiht

A stílust és a színt nem kell külön megadni, mert így az alapértékek lesznek érvényesek (xlContinuous és xlAutomatic)

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2763) vilag válasza Delila_1 (#2762) üzenetére


vilag
tag

Köszönöm szépen!

Ez valóban elegánsabb megoldás :))

Most úgy látszik mintha megoldódott volna a probléma, na de volt már ilyen...

(#2764) vilag


vilag
tag

Újabb csoda:

Miért van az, hogy időnként úgy tűnik mintha az On Error funkció nem működne????

Jelesül:
On Error GoTo vege2
If Len(azonosito) = 8 Then
gazon = Right(azonosito, Len(azonosito) - 2)

elonev = Application.WorksheetFunction.VLookup(gazon, Workbooks(gtn).Worksheets("gtorzs").Range("c:aq"), 3, 0)
(...)

Ha ott az On Error akkor miért kapom mégis ezt a hibaüzenetet:

Másik gépen ugyan ezt futtatva máshol akad ki, másik hibával, de ott is van On Error

Van valakinek ötlete, hogy mi okozza ezt az időnként előforduló hibát?
Esetleg ki tudom váltani az On Errort valamivel?

Köszönöm!

(#2765) csaszizoltan válasza Zsolt_974 (#2671) üzenetére


csaszizoltan
csendes tag

Ha csak azokat íratnád ki, amik tartalmazzák a "(COM" részstringet idézőjelek nélkül,
vagy a .+\(COM\d{1,2}\).* regurális kifejezést (ez a (COM#) vagy (COM##) szerkezetű stringeket találja meg)?

- Kivel és mit iszik Orbán? - Tök mindegy! Sörös vagy boros, csak közel legyen Soroshoz.

(#2766) csaszizoltan válasza vilag (#2764) üzenetére


csaszizoltan
csendes tag

Keress rá az alábbira:
vba run time error 1004 tulajdonsága nem érhető el
és az alábbi találat:
Excel(VBA) Miért nem működik a .Match parancs?
idézet belőle:
"Azért, mert ha nincs" (itt: találat) ", akkor hibát generál."

Értem én, hogy az On Error-nak el kéne kapnia a nem talált eseteket, de hátha a találaton lévő
On Error Resume Next
változat megoldja.

Elképzelhető még a hiba okára a változók deklarációjának (Dim) elmaradása.

Másrészt az eső sorba írt
Option Explicit
-tel fordítási időben szűrhetünk hibákat.

- Kivel és mit iszik Orbán? - Tök mindegy! Sörös vagy boros, csak közel legyen Soroshoz.

(#2767) Delila_1 válasza csaszizoltan (#2766) üzenetére


Delila_1
veterán

Dim sor As Variant

sor = Application.Match("keresett_érték", Columns(1), 0)

If VarType(sor) = vbError Then
MsgBox "Nem szerepel az A oszlopban a keresett érték", vbCritical, "Hiba"
On Error GoTo 0
Exit Sub
End If

Fontos, hogy a változót, aminek az Application.Match függvénnyel akarsz értéket adni, Variant típusúként deklaráld.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2768) vilag válasza Delila_1 (#2767) üzenetére


vilag
tag

Üdv!

Lehet, hogy nem volt egyértelmű amit írtam.
Ez a kód rész évek óta a helyén van és működik, azonban időnként (évente 3-4 alkalommal) gondol egyet és a fenti hibát produkálja.
Ilyenkor általában a gép újraindítása sem hoz megoldást.
Majd másnap ismét tökéletesen működik minden.

A legutóbbi esetben amikor a hiba előjött, másik gépen is futtattam a kódot, ott meg egy másik kódrésznél akadt ki, de ott is on error volt hivatott megoldani a problémát.
Ezért gondoltam, hogy a környezetben lehet valami hiba, de nem tudom hogy mi.

(#2769) BigBadPlaYeR


BigBadPlaYeR
senior tag

Üdv!

VB.NET-ben készítek a kollegámmal egy kiegészítőt egy CAD-programhoz. Adatokat akarunk megjeleníteni egy DaraGridView-ban (CustomInfoDataGrid néven fut a kódban). Ott van a probléma, hogy amikor a CAD-ből kiolvasott adatokat fel akarom tölteni a sorba, az késleltetéssel megy végbe. Bizonyos számú lépésen még túl kell mennie, mire ténylegesen megjelenik az új sor az adatokkal.

For i As Integer = 0 To (myConfigsList.Count - 1)
' Változók behívása az aktuális config-ból
Dim ConfigName As String = myConfigsList.Item(i)

Dim PartNo As String = swActiveModel.CustomInfo2(myConfigsList.Item(i), "PartNo")
Dim Description As String = swActiveModel.CustomInfo2(myConfigsList.Item(i), "Description")

Dim Finish As String = swActiveModel.CustomInfo2(myConfigsList.Item(i), "Finish")
@ Dim Jelleg As String = swActiveModel.CustomInfo2(myConfigsList.Item(i), "Jelleg")


' Aktuális DataGrid sorhoz infók hozzáadása
Debug.Print("----PrepareDataGridView - AddRowKezd")

# CustomInfoDataGrid.Rows.Add(ConfigName, PartNo, Description, Jelleg) 'MaterialValue, Finish)
Debug.Print("----PrepareDataGridView - AddRowVége")

Next i

A #-el jelölt sorban van a parancs, hogy adja hozzá a sort az adatokkal. De ez nem történik meg, egészen addig, amíg a következő loop-ban el nem ér a @-al jelölt sorig. Ez alapból nem lenne baj, csak az értékek függvényében a további oszlopok más-más értéket kapnának. És amíg nincs kitöltve az összes érték, a következő folyamat hibára fut.

Van valakinek ötlete, hogy ez így normális, vagy a kódunkban van valami hiba? Valahogyan azonosítani kellene, hogy mikor töltötte fel az új sort. Próbáltam az idővel is játszani, beállítottam a végén már 10 másodperces várakozást is, de egészen addig nem jelent meg a sor, amíg a @-al jelölt elemhez nem ér a program.

Előre is köszönök minden ötletet!

"Furcsa, hogy az ember milyen keveset ér el, ha nem is próbálkozik."

(#2770) Delila_1 válasza BigBadPlaYeR (#2769) üzenetére


Delila_1
veterán

A helyfoglalásokat (Dim) a ciklus elé írd, és csak a nevük és típusuk szerepeljen ott.

Dim ConfigName As String, PartNo As String, Description As String

A ciklusban már csak értéket adj ezeknek:

ConfigName = myConfigsList.Item(i)
PartNo = swActiveModel.CustomInfo2(myConfigsList.Item(i), "PartNo")

stb.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2771) BigBadPlaYeR válasza Delila_1 (#2770) üzenetére


BigBadPlaYeR
senior tag

Szia!

Köszönöm a tippet!
De sajnos ez nem hozott megoldást; ugyanúgy fut le a program.

"Furcsa, hogy az ember milyen keveset ér el, ha nem is próbálkozik."

(#2772) Ispy válasza BigBadPlaYeR (#2769) üzenetére


Ispy
veterán

És ha csinálnál inkább egy datatable-t, azt feltöltöd és utána megadod a gridnek, DataSource=DT.

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2773) BigBadPlaYeR válasza Ispy (#2772) üzenetére


BigBadPlaYeR
senior tag

Azzal még nem próbálkoztam. Bár nem tudom, hogy arra hogyan fog reagálni, hogy az első 4 oszlop függvényében változik az 5-6. oszlopban lévő ComboBox-ok tartalma (sőt, a 6. Combobox tartalma még az 5. oszlopban lévő értéktől is függ).

Ez lesz a következő akkor, köszönöm az ötletet!

"Furcsa, hogy az ember milyen keveset ér el, ha nem is próbálkozik."

(#2774) BigBadPlaYeR válasza Ispy (#2772) üzenetére


BigBadPlaYeR
senior tag

Üdv!

A Combobox-os végül elengedtük, máshogy oldottuk meg az adatok beírását.
Viszont a Datatable-től villám gyors lett a GridView! Köszönöm az ötletet!

Lenne egy másik kérdésem is:
VB.net-ben hogyan lehet megoldani, hogy két user form "egymáshoz tapadjon"? Van egy Main form, amiről több kiegészítő formot lehet indítani. Amikor a Form2 indul, egyből a Main Form mellett jelenik meg, eddig ok. Azt szeretném, ha mozgatom a main form-ot, akkor a form2 is mozduljon vele (az már csak a hab lenne a tortán, ha fordítva is működne).

"Furcsa, hogy az ember milyen keveset ér el, ha nem is próbálkozik."

(#2775) Ispy válasza BigBadPlaYeR (#2774) üzenetére


Ispy
veterán

Form.LocationChanged eventel kell játszani.

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2776) Petya25


Petya25
addikt

Sziasztok
Lenne két láma kérdésem.

Studioban a táblázatos adatokat simán fel lehet húzni egy formra akár paraméterekkel szűrve is, addig grafikonon nem akaródzik összejönni. Annak valami trükkje van? Nem tudok ráhúzni adatot.
[link]

Meg ha feltettem adatmezőket az adatforrásból egy formra csak a rekord léptetőkkel tudok köztük mászkálni. Ehhez egy comboboxot használnék, ahol rögtön a kívánt rekordra lehet ugrani. Ezt itt meg lehet oldani?
[link]

köszönöm

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2777) Delila_1 válasza Petya25 (#2776) üzenetére


Delila_1
veterán

1. A grafikonos kérdést nem értem.

2. Teszel a formra egy textboxot, ahol megadod a rekord sorszámát. Mivel az itt megadott érték szöveg típusú (ezért hívják textboxnak), át kell alakítanod számmá – pl. hozzáadsz 0-t, vagy szorzod 1-gyel. Ezután már beírhatod a form objektumaiba a cells(sorszám, oszlop) értékeket.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2778) Petya25 válasza Delila_1 (#2777) üzenetére


Petya25
addikt

Köszi a választ.

A grafikonnál arra gondoltam, hogy meglévő adatokból nem tudok "felhúzni" adatot a formra. Amíg DataGridView-ra simán ráteszem a táblám/lekérdezésem adatait, a Chart-ra nem tudom. Adatokat hogy tudnék feltenni? A DataSource-nak megadom a formon elérhető lekérdezést, de a Series properties-nél már nem tudom a kívánt oszlopokat elérni.

Na a második válaszodat én nem értem. :B
Sorszámot ugyan tudnék választani egy listából (pl 1, 2, 3) de abból hogy lesz névsor esetén Lacika. User nem tudja mi a sorszám mögötti név előre. Ez alapján tudnék egy olyan lekérdezést készíteni ahol mint paraméter felhasználnám a nevet (bár ez nem túl szép mert mi van ha két lacika van, viszont listázható) és mint szűrő adnám a formnak. Az jobb lenne, hogy ugyan nevet listáznék de a mögötte lévő ID-vel együtt tudnám kiválasztani, ahol az ID mehetne láthatatlanul a szűrőbe. Accessben ez sima ügy volt. Egyelőre ilyet nem találtam, még csak ismerkedem vele.

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2779) Delila_1 válasza Petya25 (#2778) üzenetére


Delila_1
veterán

A képeken láthatod, hogy az adatokat tartománnyá alakítottam, majd az A2:B10-nek nevet adtam. Ez lett a ComBobox RowSource bemenő tartománya (Munka1!ID_Nev)
A ComboBox ColumnCount értéke 2, ezért látszik mindkét oszlop. Az egyik nevet (Anna) szándékosan 2 ID-hez rendeltem.

A név kiválasztásakor a lenti makró beviszi a kívánt értékeket a 2 labelbe.

Private Sub ComboBox1_Change()
Dim sor As Integer

With Sheets(1)
sor = Application.Match(ComboBox1, .Columns(1), 0)
Varos = .Cells(sor, 3)
Fogl = .Cells(sor, 4)
End With
End Sub

Azt még most sem értem, miért egy diagramról akarsz értékeket bevinni a formra, miért nem abból a tartományból, amiből létrehoztad a diagramot.

[ Szerkesztve ]

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2780) Petya25 válasza Delila_1 (#2779) üzenetére


Petya25
addikt

Lehet én nem fogalmaztam még az elején pontosan, nem excelben próbálom megoldani, hanem Visual Studio-val. Meglévő MsSQL táblákból és lekérdezésekből jönnek az adatok.

Mindkét kérdésben én voltam a gyík....

Az elemválasztós problémámra találtam megoldást, a ComboBox-nak adott forrás összes mezője használható szűrőnek nem csak a megjelenített. Meg két külön forrást használtam amit én kevertem el....

És a diagramnál ugyan simán nem lehet rádobni adatot, de a DataSource beállítása után a Series properties-nél az X és Y tagjainak már használhatók az értékek...
Nem mondom, hogy egyszerű, de legalább elég nehézkes. :)

Na most már csak a Pivot fazont kéne kitalálnom, hogy hozom össze, ahol összegzett adatok is vannak.

Köszi a tippeket meg a segítséget.

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2781) Delila_1 válasza Petya25 (#2780) üzenetére


Delila_1
veterán

:)

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#2782) Petya25 válasza Delila_1 (#2781) üzenetére


Petya25
addikt

Esetleg valami tipped lenne PIVOT megoldásra a Visual Studióban?
Nem találok semmilyen ilyen lehetőséget....
A lenézett Access-ben sok éve működik, pár kattintás volt egy pivot vagy egy chart az adatokból. Lehetetlen, hogy egy ilyen MS eszközben nincs ilyen megoldás.

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2783) sztanozs válasza Petya25 (#2782) üzenetére


sztanozs
veterán

PIVOT lekérdezést kell csinálni: [link]

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#2784) Petya25 válasza sztanozs (#2783) üzenetére


Petya25
addikt

Köszönöm
Tehát oldjam meg a forrásban valahogy? És ha előre nem tudom az oszlopok számát...
Még Access-re jár az agyam. ahol röptében lehet sort, oszlopot, adatot, szűrőt behúzni és kész a form.

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2785) martonx válasza Petya25 (#2784) üzenetére


martonx
veterán

Szerintem át kellene menned az SQL-es topikba.

Én kérek elnézést!

(#2786) Ispy válasza Petya25 (#2784) üzenetére


Ispy
veterán

Ha accessről térsz át .net-re, akkor nyugodtan felejtsél el mindent, amit ott használtál, tapasztalatból mondom.

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2787) Petya25 válasza martonx (#2785) üzenetére


Petya25
addikt

SQL-ben mindenem kész van amit eddig használtam, de ha nagyon szorulok átmegyek.
2000 lekérdezést nem szívesen írnék át, elsőre a GUI-n próbálnám megoldani az elvárt kimenetet.

Ispy
Nem olyan nagy a baj, csak brutál mire mindent legyártok.
Sima riportolás megoldható viszonylag fájdalommentesen csak épp nem a régi megjelenítést adja.
Igazából most pár dolgon vakarózok, timeout (hiába állítom), jelentés fazon ami nincs, pivot és diagram nagyon gáz így hirtelen. Meg majd még a rakás egyedi megoldás amit a formokon eddig használtam....
Esetleg pár gyakorlati tanácsod lenne a dolgaimra?

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2788) vilag


vilag
tag

Valaki mentsen meg az ablakon kiugrástól!!!!

Nem egészen VB kérdés, de hátha tud valaki valamit...

A szóban forgó munkafüzetben a képletek számításra manuálisra van állítva, mert a munkafüzet mérete több mint 20 Mb, és ha egyfolytában számolgatna amikor beleírok, akkor azzal telne az egész nap.

Kb. két napja előállt az a helyzet, hogy a munkafüzetben a képletek számítása továbbra is manuálison van, azonban mikor csinálok egy másolás beillesztést, akkor elkezdi újraszámolni a munkafüzetet.

Valaki mondja meg nekem legyen kedves, hogy ez most, hogy a bánatos fittyfenében lehet?
Más esetekben ugyan úgy nem számol, ahogy annak lennie kell, de másolás-beillesztésnél mégis számol.

Hogy a ..csába tudnám ezt megakadályozni? Valami frissítés művelte ezt a csodát?

Az újraszámolás 4 maggal is igényben vesz 10-15 másodpercet. Nekem csak most legalább 70-100 ilyen kell végrehajtanom, ki lehet számolni, hogy akkor mennyi időt is fog igénybe venni mire végzek.

Van valakinek valami ötlete a probléma megoldását illetően??????

Szerk: Vélhetően az lehet a baj, hogy másik folyamatban ugyan csak megnyitottam a munkafüzetet olvasásra és az olvasásra nyitott táblából az írásra nyitott táblába történő másolás esetén csinálja ezt, bár így sem értem, hogy ehhez mi szükség újraszámolásra a forrástáblában.

[ Szerkesztve ]

(#2789) Pali79


Pali79
aktív tag

Sziasztok!
Most kezdtem ismerkedni a VB-vel. Beszereztem a VB 2010 express változatát és egy könyvet ami ugyan a 6-ot mutatja be, gondoltam jó lesz ez is, de valami mégsem stimmel. Nem tudom, hogy a program működésében van különbség vagy én csinálok valamit rosszul.
Szóval a feladat az lenne, hogy készítsek olyan programot ami a négyzet területét kiszámolja. A probléma azzal, hogy az egyszerű matematikai jelekre azt írja, hogy nem ismeri. Tehát amikor leírom neki hogy LABEL2 = LABEL1 * LABEL1 a csillagra azt írja nem ismeri.
Mi a megoldás erre?

(#2790) Ispy válasza Pali79 (#2789) üzenetére


Ispy
veterán

Nem értem mik ezek a labelek?

Kicsit több infót...

Egyébként meg a label egy control, nincsen értelme összeszorozni, lehet ezt akartad:
Label2.Text = Label1.Height * Label1.Width

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2791) Pali79 válasza Ispy (#2790) üzenetére


Pali79
aktív tag

A label az egy üres címke. Az egyik üres címkébe beírva a négyzet oldalhosszúságát, az OK gombot megnyomva a másik üres címkébe beírja az első címkébe beírt szám saját magával szorzásának eredményét. Ez a hibaüzenet:
Error 1 Operator '*' is not defined for types 'System.Windows.Forms.Label' and 'System.Windows.Forms.Label'.

(#2792) Petya25 válasza Pali79 (#2791) üzenetére


Petya25
addikt

A label az egy szöveges eszköz, használj beviteli mezőt, azt már szorozhatod.

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2793) Pali79 válasza Petya25 (#2792) üzenetére


Pali79
aktív tag

Annak mi a pontos neve?

(#2794) Ispy válasza Pali79 (#2791) üzenetére


Ispy
veterán

Az a baja, hogy te label-eket szorzol össze, aminek nincsen értelme.

Leírtam, hogyan kell csinálni, az egyik label text értékét állítod be a másik label magasság és hosszúság tulajdonságának szorzatára.

[ Szerkesztve ]

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2795) Petya25 válasza Ispy (#2794) üzenetére


Petya25
addikt

Szerintem nem a label méretét akarja, hanem a beírt szám négyzetét.

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2796) Pali79 válasza Petya25 (#2795) üzenetére


Pali79
aktív tag

Pontosan! Csak még azt nem tudom, hogy a LABEL helyett mit kellene használni.

(#2797) Petya25 válasza Pali79 (#2796) üzenetére


Petya25
addikt

Textbox

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#2798) Pali79 válasza Petya25 (#2797) üzenetére


Pali79
aktív tag

Így sem jó valami:
Error 1 Operator '*' is not defined for types 'System.Windows.Forms.TextBox' and 'System.Windows.Forms.TextBox'.

Ez lenne a kód:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
TextBox2 = TextBox1 * TextBox1
End Sub

(#2799) Ispy válasza Pali79 (#2798) üzenetére


Ispy
veterán

Még egyszer:

ennek így nincsen értelme. Szorozni csak számokat lehet, a textbox értékét meg a text tulajdonsággal tudod lekérni/módosítani.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
TextBox2.Text = TextBox1.Text * TextBox1.Text
End Sub

[ Szerkesztve ]

"Debugging is like being the detective in a crime movie where you're also the murderer."

(#2800) Pali79 válasza Ispy (#2799) üzenetére


Pali79
aktív tag

Így már működik, köszi! A könyvben azt írják, hogy a LABEL alapértelmezetten TEXT tulajdonságú, ezért nem kell kiírni, de ezek szerint mégis.

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Visual Basic
Copyright © 2000-2024 PROHARDVER Informatikai Kft.