reforest
asked on
ADD FIELD SET A DEFAULT VALUE SQL
Hi Geniuses, Gurus, Experts, et al.,
I want to make sure I understand. There was a question answered before about setting default values when creating a table. It was closed and the expert said there was a M$ bug. Are you saying there is no way to create a column that contains a default value when programming in Delphi and working with an Access 2000 database? I tried the following and it didn't work:
with MyQuery do
begin
Close;
SQL.Clear;
SQL.Add('ALTER TABLE ' + TableName + ' ');
SQL.Add('ADD COLUMN Deleted CHAR(1) DEFAULT ''N''');
ExecSQL;
end;
Help please.
I want to make sure I understand. There was a question answered before about setting default values when creating a table. It was closed and the expert said there was a M$ bug. Are you saying there is no way to create a column that contains a default value when programming in Delphi and working with an Access 2000 database? I tried the following and it didn't work:
with MyQuery do
begin
Close;
SQL.Clear;
SQL.Add('ALTER TABLE ' + TableName + ' ');
SQL.Add('ADD COLUMN Deleted CHAR(1) DEFAULT ''N''');
ExecSQL;
end;
Help please.
"I tried it and it didn't work"
-please provide details as to in what way it did not work, such as any error messages or the results.
Just a minor note about the field "Deleted" - I don't think it's a reserve word but just in case it is you may want to put it in quotes or show it as a descendant of a table
Example
SELECT MyTable.Deleted FROM MyTable
-please provide details as to in what way it did not work, such as any error messages or the results.
Just a minor note about the field "Deleted" - I don't think it's a reserve word but just in case it is you may want to put it in quotes or show it as a descendant of a table
Example
SELECT MyTable.Deleted FROM MyTable
Hi,
Try this way :
SQL.Add('ADD COLUMN Deleted CHAR(1) DEFAULT ''N'' with values');
Try this way :
SQL.Add('ADD COLUMN Deleted CHAR(1) DEFAULT ''N'' with values');
ASKER
The following code created the column, but did not put any values into rows that already contained data, and the last row (when viewed in Access) had #Error in the Deleted column:
DataMod.CommandQuery.Comma ndText := 'ALTER TABLE Chemicals ADD COLUMN Deleted CHAR(1) DEFAULT ' + QuotedStr('N');
DataMod.CommandQuery.Execu te;
The following code caused an error that said 'Syntax error in ALTER TABLE statement':
with MyQuery do
begin
Close;
SQL.Clear;
SQL.Add('ALTER TABLE Chemicals ADD COLUMN Deleted CHAR(1) DEFAULT ''N'' with values');
ExecSQL;
end
So, still nothing that adds 'N' to my new column. Thanks for the help, but more ideas needed.
DataMod.CommandQuery.Comma
DataMod.CommandQuery.Execu
The following code caused an error that said 'Syntax error in ALTER TABLE statement':
with MyQuery do
begin
Close;
SQL.Clear;
SQL.Add('ALTER TABLE Chemicals ADD COLUMN Deleted CHAR(1) DEFAULT ''N'' with values');
ExecSQL;
end
So, still nothing that adds 'N' to my new column. Thanks for the help, but more ideas needed.
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
Thanks for the help. It always stinks when the answer is, 'You can't do it the easy way'. Oh well. I've figured out a workaround now.
Glad I could help, but now I'm curious how your work around is implemented....
I guess you use an UPDATE query or add the Default value to the form field before the INSERT.
Nic;o)
I guess you use an UPDATE query or add the Default value to the form field before the INSERT.
Nic;o)
ASKER
Actually, it's not anything interesting. I found a way to do what I wanted to do without entering a default value at all. I'm such a beginner that I was having trouble trying to select rows where MyTextField = ''. I thought if I added a default, then I could SELECT * from MyTable WHERE MyTextFIeld = 'Default'. I now know that I need to SELECT * from MyTable WHERE MyTextFIeld Is Null.
BTW, I still have no idea how to rename columns or copy data from one column to another within the same table...want me to submit a new question?
BTW, I still have no idea how to rename columns or copy data from one column to another within the same table...want me to submit a new question?
No need for a new question, as I'm not "in for the points" :-)
To copy data from column to column use:
UPDATE tblA SET fieldA = FieldB
Without a WHERE clause all rows will be effected. (Always try first on a backup copy of the table when manipulating data in tables!)
Renaming is done with the "AS" predicate like:
SELECT fieldA AS Column1 from tblA
This will give one column named "Column1" in the output of the query.
Success with your application !
Nic;o)
To copy data from column to column use:
UPDATE tblA SET fieldA = FieldB
Without a WHERE clause all rows will be effected. (Always try first on a backup copy of the table when manipulating data in tables!)
Renaming is done with the "AS" predicate like:
SELECT fieldA AS Column1 from tblA
This will give one column named "Column1" in the output of the query.
Success with your application !
Nic;o)
ASKER
Thanks for the help, but I'm still having trouble.
Before you sent this reply I opened a question titled 'UPDATE table SET col1 = col2 not working', because I found something on the internet about copying columns in SQL. The question is still open, though, because it's not working in Delphi. It works if I open my Access database and run the UPDATE query, but not when I try to do it in code from Delphi.
I have successfully run other types of queries (SELECT INTO, ALTER TABLE, ALTER COLUMN, etc.), so I know how it works most of the time. It's just not working for my UPDATE query.
Do you program in Delphi?
Before you sent this reply I opened a question titled 'UPDATE table SET col1 = col2 not working', because I found something on the internet about copying columns in SQL. The question is still open, though, because it's not working in Delphi. It works if I open my Access database and run the UPDATE query, but not when I try to do it in code from Delphi.
I have successfully run other types of queries (SELECT INTO, ALTER TABLE, ALTER COLUMN, etc.), so I know how it works most of the time. It's just not working for my UPDATE query.
Do you program in Delphi?
Here is an example...
ADOCommand1.CommandText := 'Alter Table CDLib ADD CDKey Text(50)';
ADOCommand1.Execute;
ADOCommand1.CommandText := 'Alter Table CDLib ADD Comments Memo';
ADOCommand1.Execute;
You can then add your default text as you did above.
I also would use quoted string. I feel it makes quoted strings in strings easier and more fool proff.:
SQL.Add('ADD COLUMN Deleted CHAR(1) DEFAULT ' + QuotedStr('N'));
Hope this helped.
John