Datenbank – die neusten Beiträge

Access Button soll Code ausführen?

Sorry, für die Frage, ist bestimmt richtig leicht.

Kenne mich halt leider null mit access aus, habe am Montag das erste mal in meinem Leben was davon gehört und befinde mich zu Zeit in einem Praktikum, ich soll mir alles selbst beibringen.

Ich möchte nun einen Button erstellen, der dann den letzten Datensatz dupliziert und zwar so oft, wie man angibt, also man gibt z.b. eine 5 an, dann dupliziert er den Datensatz 5 mal.

Der PK ist ein Autowert und ich nehme an, das der beim duplizieren sich ändert.

-----------------------

Allerdings habe ich jetzt das Problem, dass wenn ich einen Button erstelle, nur der Assistent erscheint und da habe ich keine Lösung für mein Problem gefunden.

Also wollte ich den Button eine Makro ausführen lassen, doch auch da habe ich nur die vorgegebenen Möglichkeiten entdeckt, welche mir aber auch nicht weiterhelfen.

Ich habe die Makro dann in eine Visual Basic Datei konvertiert.

Da kann ich zwar jetzt einen Code eingeben, aber ich kann die Visual Basic datei nicht mit einem Button verknüpfen.

Da ich auch keine Ahnung vom Coden habe, habe ich mir dafür einen Code im Internet rausgesucht, der anscheinend funktionieren soll:

Private Sub Befehl227_Click()
  Dim lngI    As Long
  Dim lngIMax   As Long
  Dim strEingabe As String
  
  DoCmd.RunCommand acCmdSelectRecord
  DoCmd.RunCommand acCmdCopy
  strEingabe = InputBox("Wie oft?", , 1)
  'Benutzereingabe wurde abgebrochen
  If StrPtr(strEingabe) = 0 Then Exit Sub
  lngIMax = Val(strEingabe)
  For lngI = 1 To lngIMax
    DoCmd.RunCommand acCmdPasteAppend
  Next lngI
End Sub

----------------------

Hoffe mir kann wer weiterhelfen und bevor jmd sagt, man muss keine Datensätze kopieren! -> das ist leider genau die Aufgabe die mir gegeben wurde, ich verstehe den Sinn dahinter auch nicht.

Es handelt sich nämlich um Installationskeys, welche unterschiedlich oft einsetzbar sind, man soll also den Key und paar andere Sachen angeben und dann die Anzahl angeben, dementsprechend oft soll nun der Datensatz kopiert werden, damit man zu jeden einzeln das einlöse-Datum eintragen kann.

Hatte eigentlich erst eine Tabelle mit dem Key und so erstellt und mit einer anderen Tabelle verknüpft, in welcher die einlöse-Datums drinnen stehen, dann kann man ja eigentlich zu jedem Key, beliebig viele Datums zuordnen, aber das soll ich anders machen und zwar mit dem duplizieren.

Wäre also cool, wenn mir wer paar tipps geben könnte und bitte berücksichtigt, bei euren Antworten, dass ich noch ein absoluter Anfänger bin.

Danke schonmal im Vorraus

programmieren, Access, Datenbank

SQL effizientes mehrdimensionales Histogramm erstellen?

Hallo,

ich habe folgende SQL Tabelle und würde aus dieser mit SQL Abfragen gerne ein mehrdimensionales Histogramm erzeugen.

Meine Tabelle:

`sex` => VARCHAR(1), //für Geschlecht

`age` => INT,

`salary` => INT

Gefüllt könnte z.B. so aussehen (aber mit viel(!) mehr Einträgen natürlich):

Am ende will ich mit meiner Abfrage folgende Ausgabe erzielen:

Wie man in der obigen Ausgabe sieht, will ich die Bereiche bei age und salary nicht(!) gleich verteilen. Alle Lösungen welche also immer in 10er Schritten gehen, funktionieren in meinem Fall nicht. Die "..." Zeile in der Ausgabe soll andeuten, dass die Bereiche bei F(emale) einfach nach der selben Logik (aber vielleicht mit unterschiedlichen Bereichsbreiten) weitergehen. Daran schließt sich dann M(ale), mit den gleichen Bereichen wie F(emale) an. Count gibt jeweils die Anzahl der gefundenen Einträge zu den gegebenen Einschränkungen an. Also z.B. für den ersten Fall sowas wie

SELECT COUNT(*) from `companysalaries` WHERE age >= 18 AND age <= 19 AND salary >= 0 AND salary <= 999 AND sex='F';

Mein bisheriger (funktionierender) Ansatz war:

  1. Stored procedure erstellen
  2. temporary tables als Hiflstabellen mit Bereichen füllen und Hilfstabelle für Ausgabe erstellen
  3. 3-fach geschachtelete WHILE schleife mit Select und INSERT in einen Ausgabetabelle

JETZT ZUR EIGENTLICHEN FRAGE:

Mir kommt meine bisherige Lösung sehr ineffizient vor (54 Zeilen :/), und ich denke mir, dass man ja eigentlich in so einer schönen Sprache wie SQL dieses Problem doch einfacher lösen können müsste. Meine Lösung habe ich auch schon mehrmals überarbeitet, aber ohne die Leserlichkeit aufzugeben, komme ich nicht wesentlich unter die 54 Zeilen. Daher die Frage, ob das irgendwie besser, effizienter und/oder kürzer geht. Die Lösung sollte zudem nur(!) SQL enthalten und keine sonstigen Erweiterungen benötigen/nutzen.

Danke im Voraus für alle Antworten

whgoffline

Bild zum Beitrag
Computer, Technik, SQL, programmieren, Datenbank, Informatik, Technologie

Verbindung zur Datenbank checken - PHP?

Hi, ich hab folgende Funktion in einer Klasse dbConenction:

private mixed $connection;

public function __construct()
{
    return $this->connect();
}

private function connect()
{
    try {
        $host = "localhost";
        $username = "USER_NAME";
        $pwd = "PWD";
        $database = "DB_NAME";
        $this->connection = new mysqli($host, $username, $pwd, $database);

        if ($this->connection->connect_error) {
            throw new Exception("Connection to database failed. | " . $this->connection->connect_error);
        }
        return $this->connection;
    } catch (Exception $exception) {
        $this->connection = null;
        databaseErrorHandling($exception);
        return null;
    }
}

Die Verbindung zur Datenbank funktioniert auch, ich kann Queries ausführen. Doch mein Problem, wenn ich zum Beispiel den Username für die Datenbank ändere, soll eigentlich durch

if ($this->connection->connect_error)

eine Exception geworfen werden, weil die Verbindung ja nicht aufgebaut werden kann, da der Username falsch ist. Das Gleiche funktioniert auch nicht, wenn ich zum Beispiel das Passwort ändere. Hab in den Docs von PHP nachgelesen und dort haben die das genauso gemacht...

$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

Jemand eine Idee, warum das nicht funktioniert, so wie es funktionieren sollte :D, oder Verbesserungsvorschläge?

Danke für jede Hilfe!!!

Computer, SQL, HTML, Webseite, programmieren, Datenbank, MySQL, PHP

Welche verschieden Arten von Systemen gibt es (eingebettete Systeme etc)? Wer kann kontrollieren ob ich die Systeme richtig zugeordnet hab (siehe Foto)?

Ist die Tabellenkalkulationssoftware auf dem PC ein System von Systemen oder ist es eine eigenständige Anwendung?
Und was für ein System ist das Blutdruckmessgerät?

Mit freundlichen Grüßen

1 Eigenständige (stand-alone) Anwendungen: Dies sind Anwendungssysteme, die auf einem lokalen Rechner wie einem PC laufen. Sie besitzen alle nötigen Funkti- onalitäten und müssen nicht mit einem Netzwerk verbunden sein. Beispiele sol- cher Anwendungen sind Office-Anwendungen auf einem PC, CAD-Programme, Software zur Fotobearbeitung usw.

2 Interaktive transaktionsbasierte Anwendungen: Diese Anwendungen werden auf einem entfernten Computer ausgeführt. Die Benutzer können entweder von ihren eigenen PCs aus oder über Terminals darauf zugreifen. Hierzu gehören sicherlich Webanwendungen wie E-Commerce-Anwendungen, bei denen man mit einem entfernten System verbunden ist, um Waren und Dienstleistungen zu kaufen. Diese Anwendungsklasse enthält auch Geschäftssysteme, wobei der Zugang zu diesen Systemen über einen Webbrowser oder über spezielle Client-Programm- und Cloud-basierte Dienste wie E-Mail und Foto-Sharing erfolgt. Interaktive An- wendungen benötigen häufig einen großen Datenspeicher, auf den bei jeder Transaktion zugegriffen wird und der dabei jeweils aktualisiert wird.

3 Eingebettete Steuerungssysteme: Dies sind Softwaresteuerungssysteme, die Hard- waregeräte steuern und verwalten. Zahlenmäßig gibt es wahrscheinlich mehr ein- gebettete Systeme als irgendeine andere Art von System. Beispiele für eingebet- tete Systeme sind die Software in einem Mobiltelefon, Software zur Steuerung des Antiblockiersystems im Auto und Mikrowellensoftware zum Steuern des Kochvorgangs.

4 Unterhaltungssysteme: Dies sind Systeme, die in erster Linie für die private Nut- zung gedacht sind und die zur Unterhaltung ihrer Nutzer dienen. Die meisten dieser Systeme sind Spiele. Die Qualität der angebotenen Benutzerinteraktion ist das wichtigste Unterscheidungsmerkmal von Unterhaltungssystemen.

5 Datenerfassungssysteme: Dies sind Systeme, die mithilfe von Sensoren Daten aus ihrer Umgebung sammeln und diese Daten an andere Systeme zur Verarbeitung senden. Die Software muss mit Sensoren interagieren und wird oft in einer le- bensfeindlichen Umgebung oder unter extremen Bedingungen installiert wie bei- spielsweise innerhalb eines Motors oder an einem unzugänglichen Ort.

6 Systeme von Systemen: Diese sind Systeme, die aus vielen anderen Softwaresys- temen zusammengesetzt sind. Einige davon können allgemeine Softwarepro- dukte wie ein Tabellenkalkulationsprogramm sein. Andere Systeme in dem Ver- bund sind eventuell speziell für diese Umgebung geschrieben worden.

Bild zum Beitrag
PC, Computer, Software, Technik, Hardware, programmieren, System, Java, Elektrotechnik, compiler, datenerfassung, Datenbank, Informatik, Python, Softwareentwicklung, Technologie, Datenbanksystem, Frontend, IT-Studium, Backend-Developer

Einfache Datenbanktabellen: Würdet ihr über ID oder Bezeichnung in die Tabelle gehen?

Beispiel: Es gibt eine Tabelle Abteilungen, die im Wesentlichen nur aus ID + Abteilungsname besteht

ID  Name
123 Produktion 
124 Versand
128 IT
...

Wenn ihr die Mitarbeitertabelle befüllen wollte, in der es einen Fremdschlüssel ABTEILUNG_ID gibt, würdet ihr im Quelltext die IDs direkt als Konstanten anlegen und verwenden, also

insert into MA (... ABTEILUNG_ID...) values (...' + constProduktion_ID + '...)

oder würdet ihr die ID anhand des Namens lesen

insert  into MA (...ABTEILUNG_ID...) values (...(select abt.ID from ABTEILUNG abt where abt.Name = ''Produktion'')...)

Die erste Variante hat den Nachteil, dass man die ID nicht ändern darf. Löschte man beispielsweise den Eintrag für Produktion und fügte ihn erneut ein, würde die Abteilung nicht mehr unter der alten ID gefunden werden. Man müsste die Konstante für die ID im Quelltext anpassen.

Die zweite Variante hat den Nachteil, dass der Name sich nicht ändern darf, weil der Subselect sonst ins Leere laufen würde.

Irgendwie erscheinen mir beide Varianten suboptimal, aber die erste sogar besser, weil die ID sich nicht so häufig ändern dürfte. Programmiertechnisch fühlt es sich dennoch falsch an, die IDs als Konstanten zu speichern und direkt ins Fremdschlüsselfeld einzutragen.

Bei den Abteilungen mag das vielleicht unkritisch sein, weil man normalerweise eine Oberfläche mit einer Auswahlliste an Abteilungen anbietet, die in der Datenbank zur Verfügung stehen.
Was ist aber mit anderen Feldern, die unterschiedliche Stati oder Bereiche darstellen oder wenn Einträge erfasst werden, die Standardwerte verwenden und nicht auf einer Eingabe aus einer Benutzeroberfläche her rühren?

Beispielsweise soll in einer Applikation für die Produktion automatisch die Abteilung auf 123 (Produktion) gesetzt werden.

Hat jemand von euch einen Rat?

Computer, Technik, SQL, programmieren, Datenbank, Technologie, Anfälligkeit

Meistgelesene Beiträge zum Thema Datenbank