Español
Foro

DBase Datenbanken - ähnliche Datensätze en uno Bucle de verschiedenen Datenbanken l&

 
- 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
 
06.05.2013  
 



« Dieser Contribución wurde como Solución gekennzeichnet. »


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


383 kB
Hochgeladen:10.05.2013
Ladeanzahl138
Descargar
 
Gruß Thomas
Windows XP SP2, XProfan X2
10.05.2013  
 




Thomas
Freier
Yo versuche lo una vez.
Bitte siempre sólo en Erfolg löschen. Seek endet beim letzten Datensatz y debería nichts gefunden voluntad, por qué De todos modos, se el letzte Datensatz en cada Falle gelöscht.
KompilierenMarcaSeparación
db ("open",#1,dbuserdata$)' öffnet die Benutzerdatenbank
db ("use",#1)
db ("seek","USERNAME",personausw$,2)' sucht den Namen des Schülers
db ("delete")' löscht ihn
db ("pack")
db ("close",#1)

Also como en:
KompilierenMarcaSeparación
satznr2&=db ("seek","SCHUELER",personausw$,2)' sucht el Namen des Schülers

if satznr2& > 0

    db ("delete")' löscht el Datensatz
    db ("pack")

Endif

db ("close",#5)

Das Problema es sicher en diesem Teil
KompilierenMarcaSeparación
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


Lo se wohl n-veces el Schüler beim Lehrer gesucht voluntad. Lo se aber después de el 1. Fund el #5=Lehrer.dbf geschlossen. Como macht el Mientras que-Bucle no Sinn.
Soll aber sicher mehr gefunden voluntad, entonces beim Fund sólo db ("delete")' löscht el Datensatz y después de endwhile el como gelöscht markierten Datensätze endgültig löschendb ("pack") y Datenbank schließen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
06.05.2013  
 




H.Brill
Como Yo así beim Darüberfliegen su Codes
así sehe, mußt du
KompilierenMarcaSeparación
@db("Go", "Top")
>

antes del bucle ausführen. Das darf no en deine Bucle.
Yo denke veces, daß el Daten siempre aún en Speicher posición.
KompilierenMarcaSeparación
Whilenot %dbEof

    satznr&= &dbreccount' Anzahl Datensätze insgesamt
    db ("use",#4)
    db ("go","Top")  --> das muß vor die Schleife

Yo sería lo veces así versuchen :
KompilierenMarcaSeparación
Jetzt con @db("Pack", ) löschen, DB schließen y neu abierto.
Jetzt müßte el DB aktuell ser. Yo weiß auch no, como sicher %dbEof
en 2 Schleifen arbeitet. Usted müßtest aber en cada DB auch una sogen.
Schlüsselfeld haben, así uno en el otro DBs entonces auch el
entsprechenden Einträge löschen kann. Como reicht sí ya una einfaches
num. Feld, el aufsteigend cada Datensatz numeriert.
Como fehlt aber XProfan una Join - Befehl dazu. Como wäre sólo SQL mejor geeignet.
 
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.
07.05.2013  
 




H.Brill
Posesiones oben veces genauer gelesen.
Como wäre el Thema Datenbank-Nomalisierung wichtig.
Sind el DBs dir vorgegeben oder hast du ellos neu
erstellt ?
Um Datenredundancen a umgehen, podría uno überlegen,
el DBs algo umzugestalten. z.B. Lehrer -> mehrere Schüler
Schüler wäre entonces una Memofeld, en el como Textzeilen entonces
el Schüler untereinander posición. Mit MoveListToMem oder
MoveListToStr oder Listboxliste direkt puede ser muy schön
el Liste kopieren y en él suchen,löschen oder bearbeiten.
Evtl. podría uno auch Estructuras con Bereichen# nutzen.
En DB el Lehrer (Klasse, Schüler, Fach)
z.B. : Struct Lehrer = Klasse$(5), Fach$(20), Schueler#(400)
Das wären 20 Schüler con je 20 Signo

Tal vez helfen dir solche Überlegungen algo más.
 
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.
07.05.2013  
 




holmol93
¡Hola miteinander

Merci primero, dass ihr euch el Thema angenommen habt.

@H.Brill,

dein letzter Contribución ha me a Denken gegeben. Und como Yo el 2 Lösungen ausprobiert habe y beide mich no bastante para Ziel geführt haben, es me como Tomaten de los Augen gefallen:
WIESO musste Yo el Schülernamen en el Lehrer DB ablegen, si doch el Schülernamen, samt ihrer zugeordneten Klasse ya en el DB File con el Benutzerdaten mentira oO
Lo ergibt viel mehr Sinn, en el Lehrer DB simplemente "FACH" y "KLASSE" abzulegen y el Schülernamen el Klasse parallel de el Benutzer DB File a holen... Beim Löschen uno Benutzers de el BenutzerDB File verschwindet él also auch de el Ansichten el Lehrer voila... Und una Vorteil bringts todavía: Wenn uno el Schülerdaten editiert y el Schüler una neue Klasse zuweist, muss el sólo en el Benutzer DB File passieren y él landet automáticamente en seinen "neuen" Fachlehrern. Sonst hätte uno ebenfalls todavía Los cambios en el Lehrerfiles vornehmen necesario...

Ist ahora adaptado y se ejecuta prima... Cuestión mich sólo, wieso Yo como no de vornherein en él gekommen bin...

Bin sólo todavía Principiante en el Gebiet y vorallem en Bezug en Datenbanken

Im Grunde fand Yo Rechteverwaltungen spannend, como unser Sistema en el Geschäft en Access Aufsetzt y una muy genaue Rechteverwaltung ha, y quería así algo auch una vez programa xD y así es eigentlich el Concepto el Schulverwaltung entstanden, en el uno el Rechte ebenfalls flexibel zuteilen kann

Merci viel viel Tiempo para Eure Ayuda

... Und si yo ni Cuestión stellen dürfte, sin una neues Thema eröffnen tener... Como lautet el Befehl a Menüleiste a "zerstören", así uno ellos danach neu aufrufen kann?

Greeetz,

Danny
 
08.05.2013  
 



Hi!

¿Te ha tal vez windowstyle 16 ?
 
08.05.2013  
 




holmol93
Hallöchen a así später Stunde

No bastante Durch el Rechteverwaltung posición gewisse Menüs y Menüpunkte sólo Personen disponible, el dieses Recht haben.
Ist auch kein Problema, si al Programa cada vez neustartet, si se una otro Benutzer anmeldet.
Yo möchte aber una Login/Logout Función einbauen... Und cada vez si yo simplemente una neue Passwortabfrage mache y el Programa el Rechte zuteilt y el Menüleiste lädt se esta entonces doppelt adecuado oder enthält Menüpunkte vom Vorbenutzer, el el neue no haben debería

Für Ventana gibts sí DestroyWindow, hay algo ähnliches auch para el Leiste oben, así uno ellos löschen y neu aufbauen kann sin dass Menüpunkte doppelt erscheinen?

Greetz,
Danny
 
08.05.2013  
 



Sorry, Yo weiß scheinbar garnicht genau welche Leiste ¿Quieres decir que.

Vlt. veces a la Screenshot zeigen, simplemente a Contribución anhängen.
 
08.05.2013  
 




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

175 kB
Kurzbeschreibung: Screenshot el Menüleisten
Hochgeladen:08.05.2013
Ladeanzahl1185
Descargar
 
08.05.2013  
 




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.
 
Gruß Thomas
Windows XP SP2, XProfan X2
08.05.2013  
 




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  
 




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  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

22.273 Views

Untitledvor 0 min.
Manfred Barei08.10.2023
Member 007717917.10.2018
RudiB.27.08.2018
Ernst01.06.2016
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie