Hola de nuevo Rockin, debes poner el Open antes que el commandText, para que te acepte lo que tienes dentro del CommandText y los parametros que le pasas luego.
Código Delphi
[-]
CDSUsuarios.Close;
CDSUsuarios.Open;
CDSUsuarios.CommandText:= 'insert into usuarios (nombre,fecha,hora) values (:nombre,:fecha,:hora)';
CDSUsuarios.Insert;
CDSUsuarios.FieldByName('nombre').AsString:= txtNombre.Text;
CDSUsuarios.FieldByName('fecha').AsDatetime:= strtodate(txtfecha.Text);
...........
Saluditos