| |
|
|
- Página 1 - |
|
holmol93 | ¡Hola miteinander
Hier me está sí ya erstklassig en meiner ersten Cuestión geholfen worden y si yo langsam aber sicher siempre mehr hinter todos Thema steige, stehe Todavía veces otra vez antes una, para mich, unlösbaren Problema.
Zum Aufbau meines Programmes: Es una Programa una Schule a verwalten. Für mich una Projekt en unos pocos Dinge dazuzulernen. Lehrer y Schüler haben propio Benutzerkonten, Características y Rollen (zB. "Klassenlehrer";"Schulleiter","Klassensprecher") puede verteilt y ser lo son una Rechteverwaltung, en welcher uno el Benutzern en ihren Accounts gewisse Lese y Schreibrechte beschränken kann.
Lo son en el Hintergrund verschiedene Datenbanken. Un con Benutzerdaten (Adresse,Alter,Papel,Contraseña,Name,Benutzername), una con el zugeteilten Rechten. Dazu ha jede Person una propio Datenbankfile, de lo que el Software automáticamente erstellt se. En Lehrern enthält lo el Klassen, el ihm zugeteilt fueron después de el Schema "KLASSE","SCHÜLERNAME","FACH", en el Schülern ihre Noten y Absenzen, después de el Schema "LEHRER","FACH","NOTE", o: "ABSENZ"....
Jetzt se lo una Función geben en Benutzerdaten a ändern y Benutzer a löschen. Cuando tengo un Benutzer lösche, muss Yo seinen Eintrag de el Benutzerdatenbank, de el Rechtedatenbank y ser propio DB File entfernen. Das klappt problemlos.
Jetzt se el Lehrern aber en el Notenübersicht siempre ni "Leiche" con el gelöschten Schülernamen adecuado, como dieser sí en el jeweiligen DB File des Lehrers mitverlinkt es.
Diesen muss Yo also herauslöschen.
Yo habe me folgendes überlegt: Das Programa liest en el Schülerdatenbank el Namen el Lehrer de, el ihm Noten oder Absenzen eingetragen haben -> Fachlehrer. Dann öffnet lo el jeweilige DB File con el Lehrernamen y löscht todos Einträge en welcher el Name des Schülers vorkommt. Das muss mehrmals en Bucle passieren, como lo sí mehrere Lehrer son y una Lehrer zT auch 2 Fächer unterrichten kann.
In meiner Bucle löscht lo aber siempre sólo el Namen des Schülers de el Datenbank des ersten Lehrers, el ihm una Note gegeben ha y yo bin echt ratlos... Der Code (no lauffähig) sieht así de:
db ("open",#1,dbuserdata$)' öffnet el Benutzerdatenbank
db ("use",#1)
db ("seek","USERNAME",personausw$,2)' sucht el Namen des Schülers
db ("delete")' löscht ihn
db ("pack")
db ("close",#1)
db ("open",#2,dbrechte$)' öffnet el Rechtedatenbank
db ("use",#2)
db ("seek","USERNAME",personausw$,2)' sucht el Schüler
db ("delete")' löscht seinen Eintrag
db ("pack")
db ("close",#2)
db ("open",#3,dbpendenzen$)' öffnet el Datenbank para el Logfile
db ("AppendBlank")
db ("put","AN","SUPER-T")' hinterlässt una Logileeintrag para el Löschen des Schülers
db ("put","MESSAGE",dt("getdate",6)+" "+trim$(benutzer$)+" // löscht Schüler "+trim$(personausw$))
db ("putrec",0)
db ("pack")
db ("close",#3)
db ("open",#4,"C:\XProfanX2\Datenbanken\"+trim$(personausw$)+".DBF")' öffnet el propio DB des Schülers
db ("use",#4)
Sinestar encargado %dbEof
satznr&= &dbreccount' Anzahl Datensätze total
db ("use",#4)
db ("go","Top")
If Satznr& > 0
lehrer$=db("get","LEHRER")' Holt se una Lehrernamen
db ("open",#5,"C:\XProfanX2\Datenbanken\"+trim$(lehrer$)+".DBF")' öffnet el DB con el Namen des Lehrers
db ("use",#5)
whilenot %dbEof
satznr2&=db ("seek","SCHUELER",personausw$,2)' sucht el Namen des Schülers
if satznr2& > 0
db ("delete")' löscht el Datensatz
db ("pack")
db ("close",#5)
Endif
db("go","Next")
endwhile
Endif
db("go","Next")
endwhile
db ("close",#4)
Wär fresco, si veces alguien drüberschauen podría... Yo glaube Yo schnall algo beim Ablauf el Bucle no :O
Grüessli
Danny |
|
|
| |
|
|
|
« Dieser Contribución wurde como Solución gekennzeichnet. » |
|
- Página 2 - |
|
Thomas Freier | Mit el pcu ging's. Si ahora aber auch con X2 posible ser oder täusche Yo mich?
$H Windows.ph
DECLARE MENU&,MENU2&
$U DLGMENU.PCU=MENU.
WINDOWSTYLE 4+8
CLS
BUILDMENU2 %hwnd
BUILDMENU %hwnd
var menu%=1
WHILENOT (%KEY=2)
WAITINPUT
IF (ABS(%MENUITEM)=104) O (ABS(%MENUITEM)=204)
BREAK
ENDIF
If (ABS(%MENUITEM)=102)
~SetMenu(%hwnd,0)
~DrawMenuBar(%hwnd)
~SetMenu(%hwnd,menu2&)
~DrawMenuBar(%hwnd)
ElseIf (ABS(%MENUITEM)=202)
~SetMenu(%hwnd,0)
~DrawMenuBar(%hwnd)
~SetMenu(%hwnd,menu&)
~DrawMenuBar(%hwnd)
EndIf
WEND
FIN
PROC BUILDMENU
PARAMETERS DLG&
MENU&=MENU.NEW(DLG&)
MENU.SETNICEBACKGROUND
MENU.POPUP "&Datei"
MENU.APPENDMENU 100,"Neu"
MENU.APPENDMENU 101,"Öffnen"
MENU.APPENDMENU 102,"Menü 2"
MENU.APPENDMENU 104,"Beenden"
ENDPROC
PROC BUILDMENU2
PARAMETERS DLG&
MENU2&=MENU.NEW(DLG&)
MENU.SETNICEBACKGROUND
MENU.POPUP "&Dokument"
MENU.APPENDMENU 200,"Speichern"
MENU.APPENDMENU 201,"Drucken"
MENU.APPENDMENU 202,"Menü 1"
MENU.APPENDMENU 204,"Beenden"
ENDPROC
|
|
|
| |
|
|
|
|
| |
|
- Página 1 - |
|
| Sorry, Yo weiß scheinbar garnicht genau welche Leiste ¿Quieres decir que.
Vlt. veces a la Screenshot zeigen, simplemente a Contribución anhängen. |
|
|
| |
|
|
|
holmol93 |
Heyho
Stimmt, hätt Yo grad de Anfang a mitschicken puede *g*
Yo glaube auch no, el lo viele son, el esta Möglichkeit suchen
Aber como du siehst, unterscheidet se je después de el, welche Rechte el Benutzer ha, el Menü oben. Wenn Yo el media Logoutvorgang así einbaue, dass Yo simplemente el Menü neu aufbauen lasse, son para Teil danach Menüpunkte doppelt. Oder una Lehrer, el se einloggt, después de el el Schulleiter eingeloggt war, ha plötzlich neben seinem Menü auch todavía Zugriff aufs Master oO
Deshalb möcht Yo el Leiste "löschen" y neu inicializar dejar
El Menüpunkte voluntad encima If- Anweisungen de y eingeblendet. Nach el Motto, Wenn Recht SoundSo disponible -> zeige "Funktionen.Master" usw...
Greetz,
Danny |
|
|
| |
|
|
|
Thomas Freier | Also para jede Gruppe una propio Menü? Das podría en una Diálogo ser y luego el Zutreffende einblenden. Oder siehe [...] Einfach el Fuente una vez durchstöbern. |
|
|
| |
|
|
|
H.Brill | Nah siehste, ahora weißt du auch, qué con Datenbank-Normalisierung gemeint es. Wenn lo una normales Menü es, podría uno doch una komplettes Menü Mostrar y je después de Rechten, con EnableMenu cada Auswahlpunkte deaktivieren o. aktivieren.
So, nun muß Yo a Arbeit. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 08.05.2013 ▲ |
|
|
|
| |
|
- Página 2 - |
|
|
E.T. | ... oder sólo una externes Menü nutzen... ... y luego UseExtMenu...
como puede ser schön zwischen el Menüs hin- y her wechseln |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 08.05.2013 ▲ |
|
|
|
|
holmol93 | ¡Hola zusammen,
habe veces unos pocos Möglichkeiten durchprobiert, aber nichts funktioniert así, como se
Überlegung es: Un Person meldet se a y el Menü passt se je después de ihren Benutzerrechten a. Das klappt. Was no klappt: Lo son una Logoutfunktion, welche una Benutzer neu authentifiziert y el Rechte (auch fürs Menü) neu zuteilt. Wenn Yo el Menü danach simplemente todavía una vez neu erstelle, Yo gewisse Menüpunkte doppelt, nämlich todavía el de el Vorperson. Macht al unos pocos Tiempo ha uno una 3-Zeiliges Menü...
Ausblenden y otra vez einblenden bringt nichts, como alles una Menü es, en el gewisse "AppendMenu" Punkte con If-Then-Más ausgeblendet son. El bleiben beim Wiedereinblenden en el gleichen Status... Also en el, de el Person, que como erstes angemeldet ha.
Wenn Yo el Menü con Destroymenu(%HWnd) zerstöre, verschwindet lo zwar, pero yo kann lo danach no todavía una vez neu invitar (es en me una Procedimiento.). Fehlermeldung: "Fehler beim redactar des Menüs."
What can I do?
Es el einzige Problema, Yo de Anfang a no lösen podría... Jetzt ha mein Programa soweit todos Características y yo habe el a para Schluss aufgeschoben y brings simplemente no para laufen... lo muss doch como irgend una Weg geben, el bestehende Menü entweder todavía una vez neu a invitar sin doppelte y dreifache Menüpunkte oder lo a löschen y todavía una vez bastante neu a "definieren"...
Yo blanco, mein Problema es una Luxusproblem xD Klar könnt Yo el Menüpunkt simplemente "ausgrauen", pero son gewisse Sachen, como möchte Yo simplemente no, dass alguien, el kein Recht ha ellos a sehn, ellos sieht Und qué bringt lo el Schüler, si él auch todavía el Menüpunkte el Lehrer sieht xD |
|
|
| |
|
|
|
| Schau veces, Usted podría el dlgmenu helfen: [...] -
zwar ya alt aber Code es en. |
|
|
| |
|
|
|
Thomas Freier | Mit el pcu ging's. Si ahora aber auch con X2 posible ser oder täusche Yo mich?
$H Windows.ph
DECLARE MENU&,MENU2&
$U DLGMENU.PCU=MENU.
WINDOWSTYLE 4+8
CLS
BUILDMENU2 %hwnd
BUILDMENU %hwnd
var menu%=1
WHILENOT (%KEY=2)
WAITINPUT
IF (ABS(%MENUITEM)=104) O (ABS(%MENUITEM)=204)
BREAK
ENDIF
If (ABS(%MENUITEM)=102)
~SetMenu(%hwnd,0)
~DrawMenuBar(%hwnd)
~SetMenu(%hwnd,menu2&)
~DrawMenuBar(%hwnd)
ElseIf (ABS(%MENUITEM)=202)
~SetMenu(%hwnd,0)
~DrawMenuBar(%hwnd)
~SetMenu(%hwnd,menu&)
~DrawMenuBar(%hwnd)
EndIf
WEND
FIN
PROC BUILDMENU
PARAMETERS DLG&
MENU&=MENU.NEW(DLG&)
MENU.SETNICEBACKGROUND
MENU.POPUP "&Datei"
MENU.APPENDMENU 100,"Neu"
MENU.APPENDMENU 101,"Öffnen"
MENU.APPENDMENU 102,"Menü 2"
MENU.APPENDMENU 104,"Beenden"
ENDPROC
PROC BUILDMENU2
PARAMETERS DLG&
MENU2&=MENU.NEW(DLG&)
MENU.SETNICEBACKGROUND
MENU.POPUP "&Dokument"
MENU.APPENDMENU 200,"Speichern"
MENU.APPENDMENU 201,"Drucken"
MENU.APPENDMENU 202,"Menü 1"
MENU.APPENDMENU 204,"Beenden"
ENDPROC
|
|
|
| |
|
|
|
holmol93 | hey IF&Thomas
Merci para Eure Respuesta. Werde lo daheim grad veces ausprobieren
Also Yo sí XProfan X2 aber así es (soweit Yo determinar podría) nichts Vergleichbares posible... Posesiones rumprobiert y algo es garantiert siempre torcido gegangen...
Yo berichte morgen veces drüber, si geklappt ha
Greetz,
Danny |
|
|
| |
|
|
|
Thomas Freier |
Also Yo sí XProfan X2 aber así es (soweit Yo determinar podría) nichts Vergleichbares posible.
Doch. Wechselmenüs bajo 29.1.3 - CreateMenu, AppendMenu, SetMenu y DestroyMenu |
|
|
| |
|
|
|
E.T. |
... Lo son una Logoutfunktion, welche una Benutzer neu authentifiziert y el Rechte (auch fürs Menü) neu zuteilt. ...
Also Logout heist m.E., el el akt. Benutzer abgemeldet y niemand mehr angemeldet es. Also Benutzer abmelden, el Menü komplett zestören y luego en el Programa una Standard - Menü con uno Login - Función conjunto.
So como Si es usted el beschreibst, es más una "Benutzer wechseln". Yo denke, como geraten el Menü's durcheinander. Würde Yo más el Benutzer komplett abmelden vom Programa, Standard-Menü conjunto y ggf. en una klick en z.B. una Button "Benutzer wechseln" otra vez una Auswahl para reg. Benutzer anbieten.
Und entonces el Menü je después de Rechten otra vez "zusammenbauen" y Mostrar... |
|
|
| XProfan X2Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 11.05.2013 ▲ |
|
|
|
|
holmol93 | ¡Hola miteinander!
Posesiones mein Menü en el Alternative Möglichkeit con el Unit adaptado... Funktioniert! Puedo el Menü en cualquier momento zerstören y neu aufbauen, sin Fehlermeldung! Genial.
@Mario,
Jap, genau así verstehe Yo Logout eigentlich auch Yo mich anfangs a unserem Datenbanksystem en el Geschäft orientiert, en el uno se sólo una Contraseña authentifiziert. Sobald uno en "Logout" va, kommt inmediatamente una Logindialog, para schnellen Benutzerwechsel. Posesiones lo ahora allerdings así adaptado, como du vorgeschlagen hast: 2 Menüs. Eins con allen Características y Características voluntad después de Rechten adecuado y ausgeblendet y uno, qué una Logout adecuado se y wo uno sólo el Optionen "Beenden" y "Anmelden" ha.
Funzt problemlos ;) Damit es ahora endlich el Función "Als Benutzer ausgeben" posible geworden ;)
Gruess de Bern y todavía una schönen Sonntagnachmittag! |
|
|
| |
|
|