Készül egy fejlesztői nyelv WEBOLDAL készítéshez. BSI(=Basic Script Interpreter). Hasonló módon működik mint a php csak a nyelv basic alapú. Sok minden készen van már.
Akinek van ötlete vagy észrevétele a nyelvel kapcsolatban írjon nyugodtan, mindent ötletet szívesen veszünk. (Lehet pl. egy utasítás a nyelvben) itt elérhető: http://www.bsiscript.co.cc
Visual basic express-t hasznalok, SQL adatbazissal. Az a gondom, hogy az uj rekordok nem kerulnek be az sql fileba. Csinaltam 1 datagridview-t, ahol latom, hogy minden uj sor belekerul a tablaba, de a file fizikailag nem modosul. Tehat berakok 1,2,5 uj sort, latom, hogy ezek ott vannak, tudom modositani, meg minden, de ha belenezek az SQL fileba, ott tovabbra sincsenek bent ezek a recordok. ha kilepek es ujra elinditom a progit, akkor mintha semmit sem csinaltam volna, megint ures az egesz. mit rontok el, mit kell updatelnem? elakadtam, segitsetek!
na, kihagytam a selection-t meg a frames(1)-et és így lefut. Viszont nem értek a word VBA-jához, úgyhogy nemtom hogy ezzel nem lép-e fel valami hibalahetőség.
Sub ExclusiveCheckboxes() Dim objField As FormField For Each objField In Range.FormFields objField.CheckBox.Value = False
Next objField FormFields(1).CheckBox.Value = True End Sub
Amúgy, Word űrlappal kvízt csinálni, ez már felér a mazochizmussal.
150 kérdésem van, egy-egy jelölőnégyzettel. Mindegyikre rá kellett kattintani, és a tulajdonságok lapon nevet adni (könyvjelző), emellett az értékeléskor minden jó választ tartalmazó jelölőnégyzetet fel kellett venni a case-k közé.
Soha többet nem csinálok ilyent. Vannak már kvíz-generáló programok, majd azokkal dolgozom.
A progi nem akad ki, mert lefut, és kiírja az eredményt.
A hiba a számolás előtt, a négyzetek beikszelésekor lép fel.
A gond azzal a makróval lehet, szerintem, amely a jelölőnégyzetre való rálépéskor aktiválódik.
Maga a függvény nagyon rövid:
Sub ExclusiveCheckboxes() Dim objField As FormField For Each objField In Selection.Frames(1).Range.FormFields objField.CheckBox.Value = False 'DEBUG (Jimmy the Hand javaslatára) 'Debug.Print objField.Name & " - " & Now() Next objField Selection.FormFields(1).CheckBox.Value = True End Sub
Ebben (is?) igazad van: If gintTotal < 50 Then strComments = "Elégtelen! / Non-satisfactory." ElseIf gintTotal > 49 And gintTotal < 61 Then strComments = "Megfelelt. / Acceptable." ElseIf gintTotal > 60 And gintTotal < 71 Then strComments = "Jó! / Good!" ElseIf gintTotal > 70 And gintTotal < 81 Then strComments = "Nagyon jó! / Very good!" ElseIf gintTotal > 80 Then strComments = "Magnum cum laudae!!!" End If
Az igazság az, hogy egy-egy kérdéshez tartozó jelölőnégyzeteket nem keretbe foglaltam, hanem táblázatom van, és minden jelölőnégyzet, ill. a hozzá tartozó válaszok külön cellában csücsül.
Gyanítom, beraktál egy nem checkbox elemet is a keretbe, és az lesz a hiba oka.
Egy kis segítség a Debugoláshoz:
Módosítsd a kódot így (új rész kiemelve):
Sub ExclusiveCheckboxes()
'declare an object as the form field Dim objField As FormField
'for each checkbox (form field) in this current fame set '(or range of form fields), set all the values to false 'and loop through to make sure they are all set to false (unchecked) For Each objField In Selection.Frames(1).Range.FormFields Debug.Print objField.Name & " - " & Now() objField.CheckBox.Value = False Next objField
'now set the currently selected checkbox value to true Selection.FormFields(1).CheckBox.Value = True
End Sub
Ez semmi mást nem tesz, csak kiírja az Immediate Window-ba a ciklusban átnézett objektumok nevét, meg az időt. Ezután próbáld ki az űrlapot, és kattints egy checkbox-ra. Amikor a hibaüzenetet látod, várj egy pár másodpercig, mielőtt az OK-ra kattintatnál. Ezután Alt+F11-el menj át a VB editor ablakba, és a View menüből válaszd ki az Immediate Window-t. Abban elvileg fel vannak sorolva az objektumnevek és időpont párosok. Elképzelésem szerint a hibát okozó objektum egyértelműen felismerhető lesz abból, hogy közte és a következő objektum között lényegesen hosszabb idő telt el, mint a többi esetben.
Egyébként az értékelő algoritmusod hibás, mert 50, 60, 70 és 80 pontokra nem ad értékelést.
Így néz ki a VB kód: -------------------------- Option Explicit Public gintTotal As Integer Public gintTestTaken As Integer Private Sub Eredmény_Click()
'checks to see if GLOBAL variable "flag" 'has been set to see if user has already 'entered a final score, so the score can't be changed 'otherwise, if var is not set, then proceeds with calc
If gintTestTaken = 1 Then MsgBox "Sorry, you have already calculated your score!" Else 'calls separate routine to add up totals 'you can position your cursor inside name 'and hit Shift/F2 to jump to that procedure 'to read that code to see what happens next
Call CalcScores
'declares variables for this procedure Dim strComments As String Dim bkRange As Range
'quickly calls another routine to unlock form 'note that you can use the "Call" command or not 'it doesn't matter, except for how you would enter 'variables, if we were passing them. When using Call, 'any passed vars need to go in parens. That's info only 'as we're not doing there here! ToggleFormLock
'sets bookmarked location to total score ActiveDocument.Bookmarks("TotalScore").Range.Text = gintTotal
'relocks form ToggleFormLock
'sets the GLOBAL variable flag to 1 'to show the score cannot be changed! gintTestTaken = 1
'create message for scores 'this is optional and you'll need to change the 'settings for the total score. Since I only have three 'questions. If you have more, adjust these numbers or 'you can comment this code out by putting an apostrophe 'in front of each line, or just rip it out! If gintTotal < 50 Then strComments = "Elégtelen! / Non-satisfactory." ElseIf gintTotal > 50 And gintTotal < 60 Then strComments = "Megfelelt. / Acceptable." ElseIf gintTotal > 60 And gintTotal < 70 Then strComments = "Jó! / Good!" ElseIf gintTotal > 70 And gintTotal < 80 Then strComments = "Nagyon jó! / Very good!" ElseIf gintTotal > 80 Then strComments = "Magnum cum laudae!!!" End If 'concatenate your message with the results 'note! If you rip out the message above, also change this code! MsgBox "Az eredmény / Your Total Score: " & gintTotal & ", vagyis /i.e.: " & strComments End If End Sub
Private Sub Document_New() 'sets both global variables '...for total and score fields... 'to zero so they can run at least once gintTotal = 0 gintTestTaken = 0 End Sub
Sub ExclusiveCheckboxes() 'declare an object as the form field Dim objField As FormField 'for each checkbox (form field) in this current frame set '(or range of form fields), set all the values to false 'and loop through to make sure they are all set to false (unchecked) For Each objField In Selection.Frames(1).Range.FormFields objField.CheckBox.Value = False Next objField 'now set the currently selected checkbox value to true Selection.FormFields(1).CheckBox.Value = True End Sub
Sub CalcScores() Dim objAllChecks As FormField Dim strName As String 'this loops through all the document fields, and if they 'are checkboxes, it captures the bookmark name of the 'checkbox and puts it into a string to check it to see if 'it is a correct answer For Each objAllChecks In ActiveDocument.FormFields objAllChecks.Select If objAllChecks.Type = wdFieldFormCheckBox Then strName = objAllChecks.Name 'DEBUG 'az alábbi üzenettel 'csak annyit lehet ellenőrizni, hogy 'a helyes jelölőnégyzeten vagyok-e éppen ' MsgBox strName 'you will need to modify the code below to one CASE for every 'CORRECT answer. If the correct answer is checked to true, 'then the GLOBAL variable holding the score will have 1 added 'to it. Select Case strName Case "Q1_c" If Selection.FormFields(strName).CheckBox.Value = True Then gintTotal = gintTotal + 1 End If Case "Q2_b" If Selection.FormFields(strName).CheckBox.Value = True Then gintTotal = gintTotal + 1 End If Case "Q3_c" If Selection.FormFields(strName).CheckBox.Value = True Then gintTotal = gintTotal + 1 End If Case "Q4_b" ..................... Case "Q151_c" If Selection.FormFields(strName).CheckBox.Value = True Then gintTotal = gintTotal + 1 End If 'Case Else 'DEBUG 'this is also a debugging tool. When you are testing 'your code, you should make sure the message box below 'is uncommented to catch any fields that contain typos. 'if they are not found, it means they don't match the 'actual field name. A typo could cause an incorrect score! 'You should only see this for incorrect checkboxes. When 'run in conjunction with the name message above, you can 'see the field name and see if it's found or not 'if a CORRECT answer is not found, you messed up! MsgBox "This incorrect answer was not found" End Select End If Next objAllChecks End Sub
Sub ToggleFormLock() If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then ActiveDocument.Unprotect 'if a password is used, add the line below after a space above 'Password:="myPassword" Else ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True 'if a password is used, add a comma after 'the last line and include the line below 'Password:="myPassword" End If End Sub ------------------------------------
A kódot eredetileg a neten találtam, és adaptáltam a projektemhez.
Helló! Lenne egy Visual Basic problémám, hátha tudtok segíteni.
Adott egy Word 2007-ben készített űrlap, azaz tesztlap (quiz), több kérdéssel, a kérdésekre 2-3 lehetőség közül választhat a felhasználó. A válaszok mellett van 2-3 jelölőnégyzet, amelyek közül egyet vagy akár hátmat be kell jelölni. (Minden kérdésnél van legalább 1 jó válasz. Van olyan kérdés, amelynél a 3-ból 2 válasz is jó, sőt akár mind a 3 jó lehet.)
Minden jelölőnégyzethez egyedi név (könyvjelző) van hozzárendelve, van egy makró, amely belépésre aktiválódik, és a teszt végén a felhasználó megnyom egy gombot, a gomb (vezérlőelem) mögött lévő VB függvény kiszámítja az elért eredményt.
A probléma az, hogy amikor a felhasználó rákattint egy jelölőnégyzetre, felugrik egy hibaüzenet: "A gyűjtemény kívánt tagja nem létezik." (OK, súgó). ezt leokézva, a négyzetet be lehet ikszelni, és látszólag semmi gond, sőt a végén az eredmény kiszámítása is megtörténik, de azért zavaró, hogy minden jelölőnégyzetnél felugrik ez a hibaüzenet.
Készítek egy cégnek egy adatbázis progit. Ez lényegében egy eladás tervező program. A cég termékeket ad el különböző vásárlóknak.
Kellene csinálnom egy reportot a forgalomra, amiben a vásárlók és a termékek lennének benne, tehát az forgalom, hogy ki miből mennyit vett. A probléma a következő: -szűrést kell csinálni - pl. ha kiválasztok egy vevőt akkor csak ahhoz a vevőhöz tartozó vásárlásokat írja ki Csak az a gond, hogy a VB report ilyet nem tud.
Én úgy gondoltam, hogy készítek egy lekérdezést erre a forgalomra, és a ComboBox-al adnám meg neki a kért paramétert, hogy mi szerint szortírozzon.
Remélem megértettétek a zagyválásomat. A segítséget előre is köszönöm.
nos. akkor ugylatszik kifelejtettem a lenyeget:)) az MDI Form scrollbarjahoz nem lehet hozzaferni kodbol. system message szinten elvileg hozza lehet, csakhogy. hiaba van beallitva a ScrollBars property True-ra, es hiaba latom a scrollbarokat a kepernyon, a GetLastError a 1447es hibat adja vissza, amikor a scrollbar positionjat allitom. ami szabad forditasban: "this form has no scrollbars"
tudom, most utni fogtok, dehat sajnos nem en valasztottam. a helyzet a kovetkezo. kolcson lettem adva egy cegnek, akik visualbasicben fejlesztenek. es van egy eleg erdekes problemajuk, amire en sem talalom a megoldast.
a problema a kovetkezo (ketto is van, de osszefuggenek). van egy MDI form, azon belul nehany child form. ezek a childek marha nagyon, szelteben-hosszaban kilognak az MDIbol. az egyes szamu gond:
- az egyik child form tele van editboxokkal, amik messzire nyulnak oldalra es lefele is, tul a kepernyon. a juzer valoszinuleg tabokkal fog kozlekedni koztuk, mert a kitoltesnel igy a logikus. viszont. ha olyan controlra tabol ra (adja a fokuszt), ami kivul van mar az MDI lathato teruleten, akkor a form nem scrolloz oda. tehat hiaba aktiv az a control, nem fog latszani.
a masik gond:
- ha a juzer fogja magat, es az egyik child formot elhuzza a fenebe, le vagy oldalra, utana dolgozik rajta, vegul bezarja ezt a formot, egy masik child form lesz ugye az aktiv, viszont az, hogy aktivva valik, nem okozza azt, hogy az MDI odascrolloz. tehat az aktiv form nem lesz lathato.
nos. ezzel kapcsolatban esetleg tudna valaki segiteni, annak nagyon orulnek. valamerre elindultam, ami lehet, hogy nem az igazi megoldas, viszont ott akadok el, hogy nem tudom, hogyan lehetne megtudni az eppen lathato MDI terulet bal felso sarkanak koordinatajat, akar az MDI sajat client teruletenek bal felsojehez kepest relativan is.