Ficheiro "manifest.rdf"?

Alguém me pode ajudar?
Acho que tenho a Base de Dados corrompida porque não consigo abrir nenhum Formulário.
Aparece sempre o seguinte popup:


Não sei onde está este ficheiro “manifest.rdf”, nem o que faz.
Depois, quer carregue em Aceitar ou Cancelar, aparece outro popup:

Mas, a coisa ainda não está muito mal porque ainda consigo abrir as Tabelas. Haverá alguma maneira de resolver o problema sem ter de recorrer a um backup antigo?
Muito obrigado.

Might be 134582 – Edited forms created by older version of LO cannot be opened any more ( steps in comment 11)
See this comment:

The problem is that for some reason, META-INF/manifest.xml contains manifest:version=“1.2” for form object element (but “1.3” in all other cases).

Hello Mr. Robert,
Thank you for your reply. However, I assume that the problem is not with the LO version. As I said, the Tables continue without any problems and, if I create a new Form, it behaves perfectly as if there were no problem with the file, although I still cannot open the other forms.

I assume the problem occurred when I closed the file.

In my base LO “Filmes.odb” I have a macro that saves and closes the file and, as I always do after any use, I press the button that runs that macro. When I opened the file again, the “frmMenu” form no longer opened, nor any other form.

Therefore, everything leads me to believe that the problem occurred when I ran the macro “SaveAndClose”. Something must have happened before the macro finished running, without me noticing. For example, reopening the same file or another .odb file.

Sub SaveAndClose
Dim dispatcher
Dim oForm As Object
Dim oDocument As Object
Dim oParent As Object
oForm = ThisComponent.DrawPage.getForms().getByName(“MainForm”)
If oForm.IsModified then
MsgBox “Please save or clear record first”
Exit Sub
End If
oDocument = ThisComponent.Parent.CurrentController.Frame
dispatcher = createUnoService(“com.sun.star.frame.DispatchHelper”)
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Value = 0
dispatcher.executeDispatch(oDocument, “.uno:Save”, “”, 0, args1())
oParent = ThisComponent.getParent()
oParent.close(true)
End Sub

In the corrupted file, the problem only affected the Forms and Reports. Tables and Queries remained accessible and intact. Therefore, the “solution” to my problem was resolved with the help of a backup copy, from which I copied all the Forms and Reports to the corrupted version. However, it would be good if I understood what I did wrong that triggered the “malfunction”.
Best regards,

Quaresma

Forms and reports are Writer documents, embedded in the Base document. Queries are directly saved in the Base document. Tables and views are saved in the database.

You macro starts with a form, which is opened for input data, not opened for editing the form document. But your macro ends with code for saving a edited form document.

SUB SaveForm
	DIM oDocument AS OBJECT, oDispatcher AS OBJECT
	DIM Array()
	oDocument = ThisComponent.CurrentController.Frame
	oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	oDispatcher.executeDispatch(oDocument, ".uno:RecSave", "", 0, Array())
END SUB

This would save the content of the form, not the form document. You have to save the record, not the document.

This macro seems to work just like the option in the navigation bar with the floppy disk icon and it is most useful to save new records or record changes.
However, if I had made any changes in the form I have to run another macro to save the document changes.
The macro I’ve been using alerts me to save de document before exiting the file and so far it has been doing it’s job. Do you think that the problem in the file was caused by the macro I use?
Best regards. Quaresma

You really want to save a form you have edited, not opened for input data. And you really want to do this automatically? What would you do if you edited something the wrong way and don’t want to save it?
.
I never created a macro, which should work while I am editing a form - but many macros when using a form for input data. If I close a form I have edited I will be asked, if I want to save the form. This will be enough for me.
.
Please have a look at the manifest.rdf inside the object folder for a form in the Base file. Might be there is really something going wrong with the version.
.

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Value = 0
dispatcher.executeDispatch(oDocument, “.uno:Save”, “”, 0, args1())

args for the executing will always have args1(0).Name and args1(0).Value. Missing the name for the argument there.

1 Like

Dear Mr. Robert,
Thank you for your interest in solving the problem that occurred with my LO Base Forms&Reports, although I think I’ve already solved it – perhaps not in the best way!

As I mentioned, I simultaneously opened the “broken file” and the copy of the last backup. Then, I deleted the Forms that were causing errors in the broken file, replacing them with the corresponding ones from the backup file.

In the end, everything was OK because the Tables in the broken file were intact, so I didn’t lose any information. I did the same with the Reports, which were also causing errors, and I considered that the problem had been solved (but not in the best way, because I didn’t understand what had happened and I didn’t know if there would be other implications besides not being able to open Forms and Reports).

Therefore, I considered that each Form and each Report has its own “manifest.rdf” and that, by replacing all the Forms and all the Reports in the “Filmes.odb” file, I had solved the problem. I even tried to find the location of the “manifest.rdf” file to see if there were any differences compared to the backup copy, but I couldn’t.
I apologize.

Best regards, Quaresma

You have already solved the problem. For future: Here is a screenshot of a Base file, opened in a zip-app (Ark on Linux).


forms/obj11/manifest.rdf
is the position of the file inside the Base file.

1 Like

Dear Mr. Robert, :grinning: :grinning:
Ah, ah! You’re the best!
Thank you… but this only digs my level of ignorance about LibreOffice Base even deeper. When I come here asking for help to solve a specific problem, it doesn’t mean I intend to become a master – you are the master, and I respect you very much for the support and help you give to ignorant people like me, who just want to learn a little more.
Best regards,
Quaresma