Login...mitnahme von Benutzername und Passwort!
-
Naja ch brauch ja eine Tabelle Rechte, weil ich als Administrator auch neue rechte anlegen will..und die kann ich nicht in die Benutzertabelle schreiben!
Darum geht es mir!
Aber würde mein Beispiel so funktionieren?
-
Naja ch brauch ja eine Tabelle Rechte, weil ich als Administrator auch neue rechte anlegen will..und die kann ich nicht in die Benutzertabelle schreiben!
Du willst also so eine Art Rechtetypen erstellen und der Admin soll später diese Typen den Usern zuordnen können ?
Aber würde mein Beispiel so funktionieren?
Dann würdest du alle vorher mit INSERT eingefügten Rechte ändern.
Beim SQL Statement fehlt das WHERE MaRechte = 'alte MaRechte' bzw. Schlüsselnr.
-
Ja ich habe eine Tabelle nur mit den Rechten, da kann der Admin verändern und hinzufügen usw...diese ist mit Usertabelle verknüpft!
Und Admin kann dann User anlegen und deinen die Rechte zuordnen!
Wie wäre Code da am besten?
-
Also hab mal was probiert...geht zwar nich...bringt aber auch keine Fehler...viell seht ihrs ja gleich!:
Also um per CheckBox einen Button zu aktivieren (also eine 1 in den String an bestimmte stelle schreiben)
void __fastcall TForm14::Button1Click(TObject *Sender) { if (CheckBox1->Checked) { String ur = Form3->Query1->FieldByName("MARechte")->AsString; String ur2=ur; ur2[7]='1'; String sql ="UPDATE Login SET MARechte ='"+ur2+"' WHERE MARechte ='"+ur+"'"; Form3->Query1->SQL->Clear(); Form3->Query1->SQL->Add(sql); Form3->Query1->ExecSQL(); } else { String ur = Form3->Query1->FieldByName("MARechte")->AsString; String ur2=ur; ur2[7]='1'; String sql ="UPDATE Login SET MARechte ='"+ur2+"' WHERE MARechte ='"+ur+"'"; Form3->Query1->SQL->Clear(); Form3->Query1->SQL->Add(sql); Form3->Query1->ExecSQL(); }So also er ändert nix...wieso?
und dann um auszulesen wo eine 1 und 0 steht...und wenn 1 steht Checkbox checked...sonst nicht checked!
Da ich das zu ändernde Recht aus Tabelle auswählen kann...und jedes Recht ja schon Buttons 1 oder 0 hat...sollen die Checkboxen eben anzeigen welche Buttons aktiv und welche nicht aktiv sind...void __fastcall TForm14::FormActivate(TObject *Sender) { Form3->Query1->SQL->Clear(); Form3->Query1->SQL->Add("select * from Login"); Form3->Query1->Open(); String str = Form3->Query1->FieldByName("MARechte")->AsString; if (str[1] == '1') CheckBox1->Checked=true; else CheckBox1->Checked=false; if (str[2] == '1') CheckBox2->Checked=true; else CheckBox2->Checked=false; if (str[3] == '1') CheckBox3->Checked=true; else CheckBox3->Checked=false; if (str[4] == '1') .....da hat er das erst mal die Hacken richtig gesetzt, und jetzt stehen sie bei jedem start wie beim ersten mal!
Also woran kanns liegen?
-
Habs auch mal so getestet:
void __fastcall TForm14::FormActivate(TObject *Sender) { String ur = Form3->Query1->FieldByName("MARechte")->AsString; int co=0; for (int i=0;i<ComponentCount&&co<ur.Length();i++) { if (Components[i]->ClassNameIs("TCheckBox")) { dynamic_cast<TCheckBox*>(Components[i])->Checked = ur[++co]-48; } } }da verändern sich die CheckBoxen auch nich...

-
Hallo
also ich hab nicht alles durchgelesen, aber das ist irgendwie sinnlos :
if (CheckBox1->Checked) { ... ur2[7]='1'; ... } else { ... ur2[7]='1'; ... }im else-Teil sollte doch eine 0 eingetragen werden oder?
bis bald
akari
-
Kamill schrieb:
da verändern sich die CheckBoxen auch nich...

Das liegt daran, das im Feld MaRechte anscheinend nicht das drinsteht was du erwartest.
Setz doch mal einen Debugger-Haltepunkt hinter der Zuweisung von dem String ur und schau dir an was im String drinsteht.
-
@akari: war copy and paste...aber egal...da es ja eh nich funzt!
@fragg:eigentlich steht das da schon drin...du meinst jetzt doch in der Datenbank oder?
-
@fragg:eigentlich steht das da schon drin...du meinst jetzt doch in der Datenbank oder?
????
Was heisst eigentlich ?void __fastcall TForm14::FormActivate(TObject *Sender) { String ur = Form3->Query1->FieldByName("MARechte")->AsString; //Hier Debugger Haltepunkt setzen int co=0; for (int i=0;i<ComponentCount&&co<ur.Length();i++) { if (Components[i]->ClassNameIs("TCheckBox")) { dynamic_cast<TCheckBox*>(Components[i])->Checked = ur[++co]-48; } } }funktioniert für alle TCheckbox in deiner Form14.
Was steht in ur wenn du dort den Haltepunkt setzt ?
-
Eigentlich bedeutet das ich nicht genau sagen kann was drin steht...weil ich übers WE nich an mein Prog ran komme...gehe ja nich extra auf arbeit!
Ich schau aber gleich montag und geb dann bescheid..!
-
Ok, also er ließt immer 111111111111111 aus, egal welches recht ich anklicke!
bei ur::00D80070 "1111111111111111"er behält praktisch das recht bei auf welches ich zuerst geklickt habe...denn wenn ich das erste mal auf ändern gehe->dann ein recht anklicke zeigt er mir die checkboxen richtig...nur danach nicht mehr....(also beim ersten programmstart nach Quellcode geschrieben),wenn ich dann prgramm neu starte behält er auch immer 111111111111111 bei!
Also woran kanns liegen?
-
Ich versteh nur nicht warum es hier bei der Anmeldung funktioniert....hier sind es ja nur TButtons!
void __fastcall TForm1::Button3Click(TObject *Sender) { String sql ="SELECT * FROM Login WHERE LName = '"+Edit1->Text+"' AND Passwort = '"+Edit2->Text+"'"; Form3->Query1->SQL->Clear(); Form3->Query1->SQL->Add(sql); Form3->Query1->Open(); if (Form3->Query1->RecordCount) { String ur = Form3->Query1->FieldByName("MARechte")->AsString; int co=0; for (int i=0;i<Form4->ComponentCount&&co<ur.Length();i++) { if (Form4->Components[i]->ClassNameIs("TButton")) { dynamic_cast<TButton*>(Form4->Components[i])->Enabled= ur[++co]-48; } } Form1->Close(); Form4->ShowModal(); } else { ShowMessage ("Benutzername oder Passwort ungültig"); } Form3->Query1->Close(); }das geht einwandfrei!
-
mal ein hinweis, könnte etwas mit dem aktuellen problem zu tun haben.
Du benutzt immer noch den inkorrekten SQL-Befehl:String sql ="UPDATE Login SET MARechte ='"+ur2+"' WHERE MARechte ='"+ur+"'";fragg hat schon einen, imo besseren , Befehl in diesen Thread geschrieben.
-
@Beliah: ja aber da müsste er ja wenigstens alle ändern...er ändert aber gar nix..!
Und wieso setzt er nun die checkboxen nicht?
-
Also das mit den auslesen des Strings und den Checkboxen setzten hab ich jetzt glaub ich...er hatte die falsche Tabelle genommen!
Aber mit dem schreiben weiß ich immernoch nich!
-
Also kann mir jemand das mit dem schreiben mal erklären bitte!
-
Ich mal wieder....also das mit dem schrieben...das wenn ich eine CheckBox anklicke, und er mir dafür eine 1 an die richtige stelle schreibst hab ich immernoch nciht...kann mir das mal jemand erklären?!
-
wow, nach einem Monat hast du es immernoch nicht geschafft die Funktion einfach umzudrehen

mal ein Tip:
frag alle CheckBoxen ab, mach daraus den ur2 und nutz dann die update-funktion
-
naja ich probiere das nicht seit einem monat!
War paar wochen urlaub etc...kannst du mir das etwas genauer erklären...weil ich das richtig verstehen möchte,und nach der zeit is man nicht mehr so drin! (somal das auch nciht ganz so leicht ist
)
-
hallo Linnea hast mich vergessen??
Also nochmal zum auffrischen:
ich möchte, wenn ich zB CheckBox3->Checked setze, das dann in der Datenbank die Position für 3 Button, also da: 110 auf 111 gesetzt wird...