4 #include <grass/dbmi.h>
5 #include <grass/form.h>
27 F_generate(
char *drvname,
char *dbname,
char *tblname,
char *key,
int keyval,
28 char *frmname,
char *frmmapset,
29 int edit_mode,
int format,
char **form)
31 int col, ncols, ctype, sqltype, more;
32 char buf[5000], buf1[100];
34 dbString sql, html, str;
45 static char *encoding_list[] = {
64 "F_generate(): drvname = '%s', dbname = '%s'\n tblname = '%s', key = '%s', keyval = %d\n"
65 " form = '%s', form_mapset = '%s'\n edit_mode = %d",
66 drvname, dbname, tblname, key, keyval, frmname, frmmapset,
77 sprintf(buf,
"Cannot open driver '%s'<BR>",
90 sprintf(buf,
"Cannot open database '%s' by driver '%s'<BR>",
101 sprintf(buf,
"select * from %s where %s = %d", tblname, key, keyval);
109 "Cannot open select cursor:<BR>'%s'<BR>on database '%s' by driver '%s'<BR>",
115 G_debug(2,
"Select Cursor opened");
119 if (
db_fetch(&cursor, DB_NEXT, &more) != DB_OK) {
124 *form =
G_store(
"Cannot fetch next record");
130 if (format == F_HTML) {
131 *form =
G_store(
"No record selected.<BR>");
134 *form =
G_store(
"No record selected.");
141 if (format == F_HTML) {
142 if (edit_mode == F_EDIT) {
145 sprintf(buf,
"<INPUT type=hidden name=%s value=\"%s\">",
152 sprintf(buf,
"<INPUT type=hidden value=\"%s\" name=%s>",
156 sprintf(buf,
"<INPUT type=hidden name=%s value=\"%s\">",
160 sprintf(buf,
"<INPUT type=hidden name=%s value=\"%s\">",
167 for (col = 0; col < ncols; col++) {
177 if (edit_mode == F_VIEW) {
178 sprintf(buf,
"<B>%s : </B> %s <BR>",
184 sprintf(buf,
"<B>%s : </B>",
190 "%s<BR> <INPUT type=hidden name=%s value=\"%s\">",
200 case DB_C_TYPE_DOUBLE:
203 case DB_C_TYPE_STRING:
206 case DB_C_TYPE_DATETIME:
211 "<INPUT type=text size=%s name=%s value=\"%s\"><BR>",
220 if (edit_mode == F_EDIT) {
222 "<HR> Assume data encoding as:<BR><BR><SELECT NAME=%s SIZE=4><HR><BR>",
227 while (encoding_list[i] !=
NULL) {
230 sprintf(buf,
"<OPTION VALUE=\"%s\" SELECTED>%s",
231 encoding_list[i], encoding_list[i]);
233 sprintf(buf,
"<OPTION VALUE=\"%s\">%s",
234 encoding_list[i], encoding_list[i]);
239 sprintf(buf,
"</SELECT>");
244 if (edit_mode == F_EDIT) {
249 for (col = 0; col < ncols; col++) {