A Macro for Base to strip out the year

Creating a macro - Writing a Script - Using the API (OpenOffice Basic, Python, BeanShell, JavaScript)
Post Reply
User avatar
LJ Bettona
Posts: 58
Joined: Fri Jan 04, 2008 12:31 pm
Location: Italy

A Macro for Base to strip out the year

Post by LJ Bettona »

I am trying to create a questionnaire database that will be used once each year for who knows how many years. I want to record simply the year the questionnaire was filled in.

I was pointed to the FUNCTIONS list and tried all the variations you can imagine around YEAR(), CURDATE(), CURRENT_TIMESTAMP, TO_CHAR() and I can't remember which others. I entered these into the SQL window in this command:
ALTER TABLE "Respondent" ALTER COLUMN "RespondentYear" SET DEFAULT "YEAR(CURDATE())"
No matter what's at the end of the command I get this error:
Wrong data type or data too long in DEFAULT clause: YEAR(CURDATE()) in statement [ALTER TABLE "Respondent"ALTER COLUMN "RespondentYear" SET DEFAULT "YEAR(CURDATE())"]
I have altered the field type for RespondentYear many times:
date
char fixed (100 also 4)
var char (100)
number
integer
still the same error.

If I remove the " " around the function it just balks at YEAR.

OK. That's the history; why I'm here.

Is there a macro that will do this? I searched this forum for Year Base and got nil response hence this post. The macros list doesn't seem to include one either.

What I want to do is either a simple YEAR(CURDATE()), or store CURDATE() in some temporary variable and apply YEAR() to that variable. I tried something like that with what little I remember but it doesn't work. Could be the functions don't exist in the basic that is being used.

It has been decades since I wrote macros in basic so assume I have forgotten all I knew.

Thanks for any help.
iMac G5, OS 10.4.11
OO 2.4, NeoOffice 3 patch 1
OOo 2.2.X on Mac OSx other + Actually NeoOffice 3 patch 1
User avatar
DrewJensen
Volunteer
Posts: 1734
Joined: Sat Oct 06, 2007 9:01 pm
Location: Cumberland, MD - USA

Re: A Macro for Base to strip out the year

Post by DrewJensen »

The function YEAR returns an INTEGER - so your data type would be INTEGER

The function TO_CHAR returns a string so your data type would be CHAR or VARCHAR

I hope that helps.
Former member of The Document Foundation
Former member of Apache OpenOffice PMC
LibreOffice on Ubuntu 18.04
Post Reply