8
Juni
2023
So führen Sie eine Anfrage von LIB ausreOffice CaLC zur MySQL -Datenbank?
17:33

So führen Sie eine Anfrage von LIB ausreOffice CaLC zur MySQL -Datenbank?

8 Juni 2023 17:33

In dem Artikel sage ich Ihnen, wie Sie die Füllung der LIB -Tische implementieren könnenreOffice Calc данными с помощью запроса к LibreOffice BaSE assoziiert mit MySQL.

Vorwort

Wie ich bereits sagte, muss ich bei der Arbeit eine Abstimmung zwischen der MS Excel -Tabelle und der MySQL -Datenbank durchführen. Die intermediären Linkverkäufe (externe) Tabellen ist lib libreOffice Base. Реализация связи между BaSE und MySQL beschrieben In einem früheren Artikel, Ves, dessen Punkte durchgeführt werden müssen, bevor die CACM -Makros mit Zugriff auf die Datenbank verwendet werden.

Der Zweck dieses Artikels - Zeigen Sie, wie Sie eine Anfrage von C beantragen könnenalc к Base и заполнять ячейки при помощи макросов. Данная статья посвящена "офисному программированию" в электронной таблице LibreOffice Calc и рассчитана на уровень начинающего программиста. Программные средства встроены в пакет LibreOffice. Предполагается, что дополнительные компоненты, MySQL, BaSE und der Stecker, die in den beiden vorherigen Artikeln erwähnt werden, sind konfiguriert.

LiB -ZugangsverbindungsschemareOffice CaLC zur MySQL -Datenbank

Siema

DBMS Mysql <->mysql коннектор ODBC/JDBC <-> LibreOffice Base <-> Libreoffice Calc

  • Die Installation des MySQL -DBMS wird im Artikel berücksichtigt So installieren Sie MySQL Server neu
  • Konfigurieren der Verbindungmysql коннектора ODBC/JDBC и LibreOffice BaSE erzählt im Artikel Wie man libreOffice BaSE mit MySQL
    *_ In diesem Artikel wird eine Verbindung von lib angesehenreoffice Calc к LibreOffice BaSE und Ausführung SQL -Anfrage mit Ausfüllen Das Ergebnis der Anforderung Elektronische Zelle Tabelle .

1. Einführung in die LIB -ProgrammierungreOffice CaLC

Das LibreOffice -Benutzerhandbuch befindet sich auf einem lokalen PC im Ordner
SC -Dokumentationalc (файл main0000.html)

cd /usr/share/libreoffice/help/ru/text/scalc/
xdg-open main0000.htmL.

Methode der externen Daten, vorgeschlagen im Zertifikat Insertion -Methode siehe Webque -Dateiry.htmL.

CD /USr/share/libreoffice/help/ru/text/scalc/Führung
xdg-open webquery.htmL.

Es ist nicht gut ohne Programmierung, da es für die Arbeit mit flachen Tabellen aus denselben Dateien calc / Excel, нас же интересует база данных LibreOffice Base. Поэтому обратился к документации по программированию LibreOffice BaSic

Hilfe.LIBreoffice.org/latest/ru/text/sbasic/shared/main0601.htmL.

Um dies in die Zelle zu bringen, wird beispielsweise eine Funktion geschrieben:

Funktion WOrkDay () Dim sDay As StrIng Sday = "Brennen" Wenn weekDay(Now) = 1 OR WeekDay (jetzt) = 7 Dann sDay="выходной" Ende wenn WorkDay=sDay Endfunktion

Menüelement Service - Makros - Makros -Verwaltung - Basic - Links, aus unserer Datei und in der rechten Maustaste auf das erstellen :
Wir heben alles hervor - wir löschen es. Wir fügen den Text ein - speichern, schließen. Wir erstellen den Dateinamen:
1) C.reate_macrO1
2) C.reate_macrO2
3) C.reate_macrO3
4) C.reate_macrO4

Auf dem Blatt in der Zelle schreiben wir den Namen der Funktion mit Klammern (in der die Eingabeparameter übertragen werden können).
Vor dem Namen der Funktion, der wir das Zeichen "gleich" einstellen ("=")
Blatt1
Beispiel:
= WorkDay ()
Und klicken Sie auf die Eingabe. Ergebnis:
Blatt2

2. Programmierung mit Datenbanken

2.1 Namen anzeigen im LIB -Datenbanksystem registriertreOffice Base

Registrierte Datenbanken können im Menü eines beliebigen Programms aus dem LibreOffice -Paket angezeigt werden:
* Service - Parameter -> *
libreOffice BaSE -> Datenbanken **
registerEd

Hinzufügen in diese Liste findet in LIB stattreOffice BaSE beim Erstellen einer neuen Datenbank: Am Ende des Masters wird angefordert - ob eine Datenbank im System registriert werden soll (standardmäßig - Register ):
Regs

Beispiele für Datenbanken:

Pfad /Home/user/.config/libreoffice/4/user/database/Biblio.odb
Name BibliograPhy

In meinem Fall habe ich eine Datenbank c erstellt C.alc с таким же именем "primer"

Pfad /Home/user/primer.odb
Name primer

Der Name der Datenbank hier kann in Russisch angegeben werden. Auch der Name der Datenbank für LIBreOffice Base может отличаться от имени БД MySQL коннектора ODBC/JDBC).

Jetzt die Lib -DatenbankreOffice Base зарегистрирована в системе. К ней можно делать запросы из электронной таблицы LibreOffice CaLC.

2.2. Mit libreOffice Calc для доступа к БД - макрос BaSic

Funktion Selprice (ID) Einsrror GoTo ErrorHandler Dim dbContext, oDataSource, db, pstmT, Oresult, S. S = "" " Wenn nicht abgewiesen (ID), dann dann dbcontext = createUnoService("com.sun.star.sdb.DatabaSecontext ") OdataSource=dbContext.getByName("primer")) Db = odataSourCe.getConnection ("", "") SQL = BuildSelectPrice (ID) Wenn SQL "" dann Pstmt=db.prepareStatemEnt (SQL) Oresult = pstmt.executeQuery () Weiß oresult.next If (s "") dann S = s + ",", " Ende wenn S = s+oresult.getString (1) Schleife db.close db.disponse () Endif Endif Selprice = S. Zurückkehren E.rrorHandler: Endfunktion Funktion BuildselectPrice (ID) Dim Sql Sql = "" Wenn nicht abgewiesen (ID), dann dann Sql = "Wählen Sie P ausrice FROM offers WHERE offer_id = " + id Endif buildSelectPrice=sql Endfunktion

2.3. Verwenden von Makros auf einem CALC -Blatt

In Zelle B2 schreiben wir einen Makroanruf:
= Selprice (A2)

wobei A1 das Verlag enthält (z. B. 1). In der Zelle C.alc будет выведена цена из базы данных LibreOffice BaSE, das mit der MySQL -Datenbank zugeordnet ist.
Das Ergebnis bei der Ausführung einer Anforderung von SELECT mit einem Eingabeparameter

2.4 Verwenden Sie mehrere Felder in der Anforderung auswählen

Code:

Funktion BuildSelectoffrPrice(id, status) Dim Sql Sql = "" Wenn nicht abmeldet (ID)and Not IsMissing(staTus) dann Sql = "select`price` FROM `offers` WHERE `offer_id` = " + id + " AND `display` = " + status Endif buildSelectOfferPrICE = SQL Endfunktion Funktion SelectActualPrice (ID, Status) einsrror goto laBel Dim dbContext, oDataSource, db, pstmT, Oresult, S. S = "" " Wenn nicht abmeldet (ID)and Not IsMissing(staTus) dann dbcontext = createUnoService("com.sun.star.sdb.DatabaSecontext ") OdataSource=dbContext.getByName("primer")) Db = odataSourCe.getConnection ("", "") SQL = BuildSelectofferPrice(id, status) Wenn SQL "" dann Pstmt=db.prepareStatemEnt (SQL) Oresult = pstmt.executeQuery () Weiß oresult.next If (s "") dann S = s + ",", " Ende wenn S = s+oresult.getString (1) Schleife db.close db.disponse () Endif Endif SelectActualPrice = S. Etikett: Endfunktion Das Ergebnis ist unten (in der ersten Spalte, die Verschiebungsfunktion Parameteray=1, а во втором display = 0): ![Das Ergebnis bei der Ausführung einer SELECT -Anforderung mit zwei Eingabeparametern](select-2params.png?lightbox&classes=img-zoomable "Результат при выполнении запроса SELECT с двумя входными параметрами") ### Makro -Debugging ЕслUnd es ist erforderlich, dass Sie den Stopppunkt im Makrocode einstellen und ** Daten starten können - den Inhalt der Zelle - Anzahl (F9) **. Der Cursor hält am Stopppunkt an. Anschließend können Sie Operatoren ausführen, die in Schritten mit dem Schlüssel ** f8 ** - "Schritt mit einem Saug" oder ** Shift+F8 ** - "Schritt mit dem Bypass" ausführen. Um den Fehler zu sehen, müssen Sie ein Kommentarsymbol festlegen - Apostroph, wenn die Funktion eine Zeile ** 'auf e hatrror goto label** и сохранить макрос Файл - Сохранить. Затем нажимаем F9 и F8. Имена зарегистрированных баз данных можно увидеть после выполнения оператора `dbContext=createUnoService("com.sun.star.sdb.DatabaseContext")` - с помощью просмотра переменной объекта `dbContext`, в поле которого `ElementNamEs "Sichtbare Zeichenfolgewerte der Datenbanken. Wenn bei der Ausführung des Operators db = odataSource.getConnection("","") выдается исключение "[unixODBC][DriverManager]Data source name not found and no default driver specified at" , такое бывает когда файл базы \*.ODB, к которой обращаемся, к которой обращаемся, перенесён от другого пользователя. В ней некорректно настроена связь в Сервис-Связи. Проще удалить файл Libre Office Base (\*.ODB) и создать новый файл БД Base. В которой корректно настроить связь на коннектор ODBC/JDBC und der Name der Datenquelle auf diesem Computer: ** Registrierung einer neuen Datenbank in LIBreOffice BaS, Installation der Kommunikation mit einer externen ODBC -Quelle ** 1. Lib libreOffice Base 2. Im Master "Verbinden Sie sich mit der vorhandenen Datenbank" 3. ODBC 4. Nächste 5. ODBC -Quellname - OK - OK 6. Nächste 7. Der Name des Benutzers ist leer. Verbindungstest. 8. Bereit 9. Geben Sie den Namen und die Position der Basis an 10. Сохранить ! Dies ist im Artikel ausführlich gesagt [Wie man libreOffice BaSE mit MySQL](/kak-svyazat-libreoffice-base-s-mysql). Jetzt funktioniert die Verbindung - im Lib -FensterreOffice Base видны таблицы внешней базы данных, и из CaLC -Makro startet ohne Fehler. . Wählen Sie in base сохранить _"Файл" - "Сохранить как"_, сохраняем файл Base \*.ODB в домашнем каталоге пользователя с понятным именем. В Calc - соответственно, сохраняем электронную таблицу с макросами CaLC zur Datei \*. ODS. ### Referenzinformationen (Benutzerhandbuch für die Programmierung) LIB -DokumentationreOffice BaSic ist auf der Scheibe cd /usr/share/libreoffice/help/ru/text/sbasic/shared/ xdg-open main0601.htmL. LIB -ZertifikatreOffice BaSIC im Internet mit einem Beispiel einer Datenbankverbindung: *[Basic_guide](https://wiki.documentfoundation.org/Documentation/BASIC_Guide) Hilfe bei UNO -Objekten: cd /usr/share/libreoffice/help/ru/text/sbasic/shared/ xdg-open uno_objects.html Zertifikat über die Kontaktaufnahme mit Datenbanken in LibreOffice * [Documentfoundation.org -> DatabaSe_access](https://wiki.documentfoundation.org/Documentation/DevGuide/Database_Access) LIB -ZertifikatreOffice по источникам баз данных Data SourCES: * [Documentfoundation.org -> Data_Sources_in_LibrEoffice](https://wiki.documentfoundation.org/Documentation/DevGuide/Database_Access#Data_Sources_in_LibreOffice) ### Abschluss Anfragen von libreOffice Calc к БД LibreOffice BaSE und weiter zur MySQL -Arbeit. ### Andere Links, Referenzmaterialien: DBContext -Objekthandbuch = C.reateUnoService("com.sun.star.sdb.DatabaSecontext ") ist in Artikeln in englischer Sprache angegeben: * OpenOffice [D.ata SourCES](https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Data_Sources) * Libreoffice [D.atabase_Access#DatabaSecontext](https://wiki.documentfoundation.org/Documentation/DevGuide/Database_Access#DatabaseContext) * Beispiele für Quellcode [OpenOffice databaSE Access](https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Database_Access) ------ ### Zusatz. Bemerkung zum Speicher von Makros Makros können in dem sehr kräftigen Tisch C gespeichert werdenalc (\*.ODS), либо в общем хранилище макросов пользователя. Рекомендую первый способ, т.к. такие файлы можно переносить между дисками ПК или между пользователями без потери макросов. Второй способ - макросы хранятся в хранилище и утрачиваются при сбое жесткого диска ПК (т.к. в ODS файлах не при способе №2 они содержатся, это является проблемой). Поэтому лучше хранить макросы в ODS-файлах, а не в разделе "Мои макросы и диалоги" редактора BaSic.

Verwandte Veröffentlichungen