Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

mein problem ist eigentlich, das ich es so programieren möchte, das es ENTWEDER nur den vornamen ausgibt ODER den nachnamen ODER beides (also jetz vom auslesen her )

und flashpixx

hat sooft == geschrieben und gesagt das ich das in dbms schreiben muss da dachte ich das is so

das mit dem das das andere feld leer sein muss hab ich wie im code 3 statements druber schon versucht zu berücksichtigen

Geschrieben

und flashpixx

hat sooft == geschrieben und gesagt das ich das in dbms schreiben muss da dachte ich das is so

Ich hatte aber auch geschrieben dass es der C Syntax ist, Du musst auch bitte meine Postings lesen.

Da Du das DBMS nicht nennst kann man auch nur beschränkt helfen. Du musst es eben schon auf den Synatx der DB anpassen und ich würde Dir empfehlen das Statement auch erst einmal nativ auf dem DBMS auszuführen, damit Du das Ergebnis siehst, bevor Du es im Quellcode machst. Je nach DBMS wird auch das XOR entsprechend umgesetzt, alternativ kann man XOR auch als AND-ODER-Kombination ausdrücken, zusätzlich würde ich prüfen, ob Du Deine komplette Kondition nicht vereinfachen kannst (Bool'sche Algebra). Auch die Prüfung auf "leer" ist meist DBMS spezifisch

Geschrieben

ich habe doch gesagt, ich hab access und wie ich da nen sql eingebe weiß ich nicht und davon abgesehen in der schule arbeiten wir mit der i5 und da gibts eigentlich KEIN xor (hat mein lehrer heute ausprobiert)

und naja kp bin ratlos -.-

Geschrieben

Bitte lies Dir einmal die Wikipedia Artikel zu XOR durch, da wirst Du auch wenn es für Gatter ist sehen, dass man XOR als entsprechende AND-OR-Kombination ausdrücken kann

XOR-Gatter ? Wikipedia

Über das Gesetz von DeMorgan De Morgansche Gesetze ? Wikipedia und die dort verlinkte Aussagenlogik bzw Boolsche Algebra kannst Du Deinen Ausdruck ggf. vereinfachen. Du solltest einmal den genannten Ausdruck:

(vorname == ?? und nachname == leer) xor (nachname == ?? und vorname == leer) xor (vorname == ?? und nachname = ??) entsprechend formulieren und ausprobieren.

In Access kann man auch Abfragen erstellen und dort direkt den SQL Syntax eingaben

Geschrieben

ich hab mir mal den ratschlag alles einzeln in eriner if anweisung ztu schreiben zu herzen genommen und es in die tat umgesetzt (auch wenn ich zuerst nen logischen fehler gemacht hab und das .getText vergessen hab) aber jetz ist mein problem

es wird garnichts mehr angezeigt

weder eine fehlermeldung noch irgendetwas in einem textfeld ich hab versucht es mir auf der eclipse console ausgeben zu lassen aber da kommt auch nix

danke nochmal für die hilfe =)

//-------------Verbindung herstellen------------------------

Toolbox myBox = new Toolbox();

myBox.setAccessData("Klient.mdb");

if (jTextFieldVorname.getText() == null && jTextFieldName.getText() == jTextFieldName.getText())

{

String data[][] = myBox.queryAccess("SELECT * FROM KlientTab WHERE (Name = '" + jTextFieldName.getText() + "')");

//------------FELDAUSGABE----------------------

jTextFieldName.setText(data[0][0]);

jTextFieldVorname.setText(data[0][1]);

jTextFieldGebDat.setText(data[0][2]);

jTextFieldAlter.setText(data[0][3]);

jTextFieldAdresse.setText(data[0][4]);

jTextFieldHaus.setText(data[0][5]);

jTextFieldHandy.setText(data[0][6]);

jTextPaneNotitz.setText(data[0][7]);

jTextAreaStatus.setText("Datensatz gefunden");

}

Geschrieben (bearbeitet)

Schreibst du den Code eigentlich selbst oder kopierst du das zusammen?

Hast du ne Ahnung von dem was du da tust?

Alleine schon die If-Bedingung:


f (jTextFieldVorname.getText() == null && [b]jTextFieldName.getText() == jTextFieldName.getText()[/b])

Mal abgesehen davon dass die Abfrage quark ist vergleicht man Strings mit "equals" und nicht mit "==". Mit "==" machst du nen Referenzenvergleich - was in dem Fall falsch ist.

JTextComponent#getText() holt den Text anhand der Methode getDocument()#getText(start, end) - und die Methode liefert jedesmal ein neues String-Objekt zurück.

Und somit liefert die Bedingung immer false.

Und, mal davon abgesehen, hat die Abfrage null Sinn. Was willst du damit prüfen?

Ob zwischen dem ersten Aufruf von getText() und dem zweiten Aufruf von getText() der Benutzer etwas geändert hat? Falls du das denkst dann solltest du mit Datenbankprogrammierung aufhören und nochmal gaaaaaanz von vorne anfange.

So, dann weiter:

1) Glaskugel ist in Reparatur, deshalb kann ich dir nicht sagen warum keine Daten ankommen

2) Was ist myBox ?

3) Was macht die Methode "myBox#queryAccess" ?

4) Warum kommt als Ergebnis ein 2-dimensionales StringArray?

5) Was passiert wenn du den SQL-Befehl in MS Access direkt ausführst?

(MS Access starten -> Datenbank öffnen -> Abfragen -> Neue Abfrage -> Das Fenster wegklicken -> Ansicht/SQL-Ansicht auswählen)

6) Was genau willst du eigentlich machen?

Eingegeben wird Vorname + Nachname, und was willst du nun haben?

Alle Sätze bei denen

a) vorname = Eingabe Vorname und nachname = Eingabe Nachname

B) ??

Bearbeitet von ksg9-sebastian
Geschrieben

also ich möchte damit nix prüfen ich möchte folgende systematik damit abfrgen (über java auf eine access datenbank) (a oder B) und wenn a aktiv ist soll b entweder leer sein oder auch was beinhalten und umgekehrt genauso

SO

2/3 my box ist ein befehl der zur toolbox gehört um auf die datenbank zuzugreifen (ein von lehrern meiner schule geschriebenes plug in welches den zugriff über JDBC.ODBC erspart)

4 weil man uns das so beigebracht hat (da werden die einzelnen einträge gespeichert, und dann in die Textfelder gesetzt)

5 mach ich noch

6 ein programm in zur abfrage einer datenbank indem man entweder den abfrageausdruck ins erste feld ODER ins 2te feld schreiben kann (normales oder)

Geschrieben (bearbeitet)

SELECT * FROM deineTabelle WHERE Vorname LIKE 'deinParameter*' OR  Name LIKE 'deinParameter*'

sollte das bicht so aussehen ?!

Dann bekommste z.B. wenn du Chris eingibst auch Christoph zurück gegeben wenn so ein eintrag exestiert. Und ansonsten das * einfach weg nehmen.

Bearbeitet von elSusto
Geschrieben

Ok, nochmal:

Dieser Code:


if (jTextFieldVorname.getText() == null && jTextFieldName.getText() == jTextFieldName.getText())

{

String data[][] = myBox.queryAccess("SELECT * FROM KlientTab WHERE (Name = '" + jTextFieldName.getText() + "')");



//------------FELDAUSGABE----------------------

jTextFieldName.setText(data[0][0]);

jTextFieldVorname.setText(data[0][1]);

jTextFieldGebDat.setText(data[0][2]);

jTextFieldAlter.setText(data[0][3]);

jTextFieldAdresse.setText(data[0][4]);

jTextFieldHaus.setText(data[0][5]);

jTextFieldHandy.setText(data[0][6]);

jTextPaneNotitz.setText(data[0][7]);

jTextAreaStatus.setText("Datensatz gefunden");


}

wird nie ausgeführt, weil jTextField.getText() == jTextField.getText() immer false liefert! Mach das draus:

if (jTextFieldVorname.getText() == null){

...

}

und es geht..

Geschrieben

Offensive Anti-Rechtsschreibung?

Ich blick nimmer was du willst und war nicht funktioniert.

Wenn du per SQL auf "null" prüfen willst musst du in aller Regel so Abfragen:


select * from tabelle where feld is null

Viele Datenbanken mögen es nicht wenn man Strings mit = abfrägt, deshalb

select * from tabelle where feld like 'text';

Auch auf das einzelne Hochkammata achten!

Geschrieben

also nochmal ^^ ich möchte ein programm schreiben welches einen zugriff auf eine access db hat

da ich mir bei der abfrage radiobuttens sparen möchte, wollte ich den sql befehl so schreiben, das daten angezeigt werden, wenn ich name OR vorname eingebe bzw beides

und nein kein anti rechtschreiber ein rechtschreibschwächelnder ^^

man das hat jetz schon 3 seiten =(

kein wunder das keiner mehr durchblickt

Geschrieben
[...] wenn ich name OR vorname eingebe bzw beides

Ich gehe Dir jetzt noch einmal den Hinweis auf:

wenn Vorname gesetzt, dann nur Vorname verwenden

wenn Nachname gesetzt, dann nur Nachname verwenden

wenn beides, dann beides verwenden

Das kannst Du entweder in Java so implementieren, so dass Dein SQL Statement direkt fertig an Access gereicht wird oder Du kannst es innerhalb des SQL Statements machen. Außerdem solltest Du eine SQL Anbindung nicht per String-Konkatination durchführen, sondern mit Prepare-Statements

  • 2 Wochen später...
Geschrieben

erstmal danke an alle die mir geholfen haben =)

ich hab es endlich geschaft es funzt so wie ich es ahben möchte =)

if (jTextFieldVorname.getText().equals(""))

{

String data[][] = myBox.queryAccess("SELECT * FROM KlientTab WHERE Name = '" +

jTextFieldName.getText() + "'"

);

danke nochmal =)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...