2017-12-09 19 views
-2

Kann ich den Wert einer Zelle in Anylogic trotzdem ändern? Ich habe versucht, getValueAt sowie setValueAt zu verwenden. Jedes Mal, wenn ich versuche, gibt es einen Fehler, der besagt, dass getValueAt nicht mit einer Datenbank funktioniert. Ich bin mir ziemlich sicher, dass dies in Java funktionieren würde. Warum funktioniert es hier nicht?Anylogic - Wie man auf eine Zelle in einer Datenbank zugreift

Irgendwelche Vorschläge oder Problemumgehungen?

+1

Zeigen Sie ein Codebeispiel, um zu demonstrieren, was Sie ausprobiert haben. – Alan

+0

Vielen Dank für Ihr Feedback. Zuerst habe ich versucht: db_auftrag.setValueAt ("2", 2, 2) Später habe ich versucht: db_auftrag.setValueAt (2,2) = 2 db_auftrag (2,2) = 2 db_auftrag ist meine Datenbank . Ich möchte 2 in der B2-Zelle schreiben – 3S7

Antwort

0

Sie müssen die Funktion insertInto verwenden, um eine neue Datenzeile hinzuzufügen oder die Funktion "Aktualisieren" verwenden, um eine vorhandene Zelle zu ändern. Geben Sie diese in die AnyLogic-Hilfe für ein Codebeispiel ein.

+0

Ich habe das versucht, aber ich verstehe es nicht. Vielen Dank trotzdem! \t InsertInto (db_auftrag) .columns (Typ1) .values ​​("1") .Execute(); sowie \t executeStatement ("INSERT INTO db_auftrag (Typ1) VALUES ('1')"); um ein gutes Beispiel in anylogic Hilfe zu finden, konnte ich nicht. – 3S7

+0

Danke. Wenn jemand anderes versucht, dieses Problem zu lösen, ist die "Update" -Funktion die zu verwendende Funktion. Ich war auf Insertion in – 3S7

0

Um insert into eine interne Datenbank so etwas tun: https://help.anylogic.com/topic/com.anylogic.help/html/connectivity/Inserting.html

Aber es scheint mir, wollen Sie einen Wert in einer Datenbank zu update. Sie müssen dies verwenden: https://help.anylogic.com/topic/com.anylogic.help/html/connectivity/Updating.html

Wenn Sie aktualisieren, müssen Sie die Zeile angeben, die Sie aktualisieren möchten. Zum Beispiel in Spalte1 ist eine ID und Sie möchten den Wert von Spalte2 aktualisieren. Tun Sie etwas wie folgt aus:

int var = 2;  
update(db_auftrag) 
.where(db_auftrag.column1.eq("parameter1")) 
.set(db_auftrag.column2, var) 
.execute(); 

Wenn Sie diesen Wert in die Simulation lesen wollen wieder, nicht lesen, die im Cache gespeicherten db-Tabellen, aber das Original. Dies wurde von Gregory hier erwähnt: https://stackoverflow.com/a/46547812/7105351

+0

konzentriert Danke, jetzt funktioniert es. Der Hinweis, zwischen Insert und Update zu unterscheiden, war sehr wichtig. Ich sollte blind sein. – 3S7

+0

Gibt es trotzdem Zugriff auf die Spalte nach ihrer Nummer? – 3S7

Verwandte Themen