Mail Archives: cygwin/2002/02/19/07:57:48
------------10095A920C0255C
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
This is a forwarded message
From: Dani P. <danielpa AT wanadoo DOT es>
To: "Pavel Tsekov" <ptsekov AT syntrex DOT com>
Date: Monday, February 18, 2002, 9:45:51 PM
Subject: Core dumped just only with strcat!
===8<==============Original message text===============
I've trying lots of things and after 1 day with it, I've achieved to work
part of the code. What I did? I just declared my array before a MYSQL_RES
variable. I had:
MYSQL_RES * result;
char petition[500];
And I changed to:
char petition[500];
MYSQL_RES * result;
And also I did all the string work before the mysql stuff (connection call,
query call,...). And, don't ask me why, it worked! (now it crashes in other
function, in a mysql_query call).
I have not a reasonable answer for this behaviour... I'm quite lost. I've
asked this same question to the mysql-win32 list, and it seems not to be a
mysql problem (according to this list).
I have attached the code (it's in mysql_procs.c, but I have attached all the
files involved-- In order to compile and run, you need Gtk-win32 library),
but you must pardon me because it has been written in Spanish and so,
variables and comments may bore you. The problem I related you was among
the first lines of the code, but the last problem I told you was among the
last lines.
Finally, could I ask you for forward this message to the cygwin list? After
the answers which claim that the error could be caused by mysql, I
unsuscribed from cywgin list, and by now, I'm not suscribed (yet).
Thanks,
Dani P.
----- Original Message -----
From: Pavel Tsekov <ptsekov AT syntrex DOT com>
To: Dani P. <danielpa AT wanadoo DOT es>
Cc: <cygwin AT cygwin DOT com>
Sent: Monday, February 18, 2002 9:57 AM
Subject: Re: Core dumped just only with strcat!
> Just tried it - it doesn't dump core here. Is this snippet taken
> from a larger source ? If so maybe it would be usefull to paste it
> all. Maybe the core happens somewhere else...
>
> Still you can try to debug this by yourself - compile with -g
> option and launch gdb. Then come back to the list if you suspect
> a bug in cygwin and not your code :)
>
> Dani P. wrote:
>
> > Sorry, in my last posting there's an error in the piece of code:
> >
> >
> >>char request[500];
> >>request[0]=3D'\0'; <------ "3D" should not be here
> >>strcat(request,"SELECT * FROM data");
> >>
> >
> > I meant that this piece of code dumps a core, not the last posting.
> >
> > Thanks,
> >
> > Dani
> >
> >
> > ----- Original Message -----
> > From: Dani P. <danielpa AT wanadoo DOT es>
> > To: <cygwin AT cygwin DOT com>
> > Sent: Saturday, February 16, 2002 10:57 AM
> > Subject: Core dumped just only with strcat!
> >
> >
> >
> >>I have installed recently cygwin in order to compile a piece of code
> >>which compiled an d worked fine in Linux, using Gtk and MySQL libraries.
> >>It compiles fine, but it dumps a core just only with a "strcat". I do
the
> >>following:
> >>
> >>char request[500];
> >>request[0]=3D'\0';
> >>strcat(request,"SELECT * FROM data");
> >>
> >>And in that last instruction, it dumps a core.
> >>
> >>Could you help me?
> >>
> >>Thanks,
> >>
> >>Dani P.
> >>
> >>
> >>--
> >>Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> >>Bug reporting: http://cygwin.com/bugs.html
> >>Documentation: http://cygwin.com/docs.html
> >>FAQ: http://cygwin.com/faq/
> >>
> >>
> >>
> >
> >
> > --
> > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> > Bug reporting: http://cygwin.com/bugs.html
> > Documentation: http://cygwin.com/docs.html
> > FAQ: http://cygwin.com/faq/
> >
> >
> >
> >
>
>
>
===8<===========End of original message text===========
------------10095A920C0255C
Content-Type: application/octet-stream; name="gui.h"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="gui.h"
=0A=
#ifndef _STDIO_=0A=
#define _STDIO_=0A=
#include <stdio.h>=0A=
#endif=0A=
=0A=
#ifndef _GTK_=0A=
#define _GTK_=0A=
#include <gtk/gtk.h>=0A=
#endif=0A=
=0A=
#ifndef _STRING_=0A=
#define _STRING_=0A=
#include <string.h> /*para strlen() y strcpy() */=0A=
#endif=0A=
=0A=
#include "mysql_procs.h"=0A=
=0A=
#define LIMPIAR_STATUS_BAR =
gtk_statusbar_pop(GTK_STATUSBAR(status),contexto)=0A=
=0A=
#define entry_customer_id text_entries[0]=0A=
#define entry_customer_name text_entries[1]=0A=
#define entry_responsable text_entries[2]=0A=
#define entry_customer_street text_entries[3]=0A=
#define entry_customer_city text_entries[4]=0A=
#define entry_customer_provincia text_entries[5]=0A=
#define entry_customer_postal_code text_entries[6]=0A=
#define entry_customer_phone text_entries[7]=0A=
#define entry_customer_fax text_entries[8]=0A=
#define entry_customer_dias_visita text_entries[9]=0A=
#define entry_compra text_entries[10]=0A=
#define entry_tecn text_entries[11]=0A=
#define entry_pago text_entries[12]=0A=
#define entry_actividad text_entries[13]=0A=
------------10095A920C0255C
Content-Type: application/octet-stream; name="gui.c"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="gui.c"
#include "gui.h"
GtkWidget * lista;
GtkWidget * window_nueva_entrada;
GtkWidget * text_entries[14];
GtkWidget * entry_maquina;
GtkWidget * entry_muela;
GtkWidget * entry_forma_plano;
GtkWidget * entry_end_use;
GtkWidget * entry_velocidad;
GtkWidget * entry_potenc;
GtkWidget * entry_esp1;
GtkWidget * entry_precio1;
GtkWidget * entry_share1;
GtkWidget * entry_esp2;
GtkWidget * entry_precio2;
GtkWidget * entry_share2;
GtkWidget * si;
GtkWidget * no;
gint n=3D0; /*numero de filas */
gint fila =3D -1; /*para que no me borre filas altruistamente */
GtkWidget * status;
int contexto;
int id_status_bar=3D-1;
MYSQL * base_de_datos;
char *entries[14];
/* Primero declaro las funciones */
void nueva() {
gtk_clist_clear(GTK_CLIST(lista));
gtk_entry_set_text(GTK_ENTRY(entry_customer_name), "");
gtk_entry_set_text(GTK_ENTRY(entry_responsable), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_id), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_street), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_phone), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_fax), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_city), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_provincia), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_postal_code), "");
gtk_entry_set_text(GTK_ENTRY(entry_customer_dias_visita), "");
gtk_entry_set_text(GTK_ENTRY(entry_compra), "");
gtk_entry_set_text(GTK_ENTRY(entry_tecn), "");
gtk_entry_set_text(GTK_ENTRY(entry_pago), "");
gtk_entry_set_text(GTK_ENTRY(entry_actividad), "");
gtk_entry_set_text(GTK_ENTRY(entry_maquina), "");
gtk_entry_set_text(GTK_ENTRY(entry_muela), "");
gtk_entry_set_text(GTK_ENTRY(entry_forma_plano), "");
gtk_entry_set_text(GTK_ENTRY(entry_end_use), "");
gtk_entry_set_text(GTK_ENTRY(entry_velocidad), "");
gtk_entry_set_text(GTK_ENTRY(entry_potenc), "");
gtk_entry_set_text(GTK_ENTRY(entry_esp1), "");
gtk_entry_set_text(GTK_ENTRY(entry_precio1), "");
gtk_entry_set_text(GTK_ENTRY(entry_share1), "");
gtk_entry_set_text(GTK_ENTRY(entry_esp2), "");
gtk_entry_set_text(GTK_ENTRY(entry_precio2), "");
gtk_entry_set_text(GTK_ENTRY(entry_share2), "");
n =3D 0; /*Pongo a cero los contadores de filas */
fila =3D -1;
}
void cerrar(GtkWidget *widget) // Ojo!! esto es peligroso. S=F3lo sirver =
para cerrar ventanas
// que tengan a lo sumo una box entre el bot=F3n y la ventana padre.
{
gtk_widget_destroy(widget->parent->parent);
}
void vaciar_callback() {
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_name),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_responsable),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_phone),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_fax),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_city),0,-1);
=
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_provincia),0,-1);
=
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_dias_visita),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_street),0,-1);
=
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_postal_code),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_customer_id),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_actividad),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_compra),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_pago),0,-1);
gtk_editable_delete_text(GTK_EDITABLE(entry_tecn),0,-1);
gtk_clist_clear(GTK_CLIST(lista));
n=3D0;
fila=3D-1;
}
int is_int(gchar * id) {
int b=3D1;
int i=3D0;
while (i< strlen(id) && b) {
if (!(id[i]>=3D'0'&& id[i]<=3D'9'))
b=3D0;
i++;
}
return b;
}
void activar_guardar(GtkButton * button,gpointer * data)
{
char * pedidos[12];
int nfor;
=09
g_print("Vamos a borrar antes de nada\n");
borra_registro(entries[0],base_de_datos);
g_print("Borrado!\n");
g_print("Vamos a insertar los datos\n");
insertar_datos_en_BBDD(entries,base_de_datos);
g_print("Insertados!");
for (nfor =3D 0; nfor < n; nfor++) {
gtk_clist_get_text(GTK_CLIST(lista), nfor,0, &pedidos[0]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,1, &pedidos[1]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,2, &pedidos[2]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,3, &pedidos[3]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,4, &pedidos[4]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,5, &pedidos[5]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,6, &pedidos[6]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,7, &pedidos[7]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,8, &pedidos[8]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,9, &pedidos[9]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,10, &pedidos[10]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,11, &pedidos[11]);
insertar_pedido_en_BBDD(entries[0],pedidos,base_de_datos); =20
}
gtk_widget_destroy(GTK_WIDGET(data));
}
gint delete_event(GtkWidget * widget,GdkEvent * event,gpointer data) {
return(FALSE);
}
void destruir_dialogo(GtkWidget * widget,gpointer data)
{
gtk_widget_destroy(GTK_WIDGET(data));
}
void dialogo_guardar()
{
GtkWidget * ventana;
GtkWidget * box_vertical;
GtkWidget * box_horizontal;
GtkWidget * texto;
=09
ventana =3D gtk_window_new(GTK_WINDOW_DIALOG);
gtk_window_set_modal(GTK_WINDOW(ventana),TRUE);
gtk_container_set_border_width(GTK_CONTAINER(ventana),10);
gtk_window_set_title(GTK_WINDOW(ventana),"Guardar");
gtk_window_set_policy(GTK_WINDOW(ventana),FALSE,FALSE,TRUE);
=09
si=3Dgtk_button_new_with_label("Si");
no=3Dgtk_button_new_with_label("No");
box_horizontal=3Dgtk_hbox_new(TRUE,0);
gtk_box_pack_start(GTK_BOX(box_horizontal),si,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(box_horizontal),no,FALSE,FALSE,0);
=09
texto=3Dgtk_label_new("El registro ya existe,\n=BFDesea =
sobreescribirlo?");
=09
box_vertical=3Dgtk_vbox_new(TRUE,0);
gtk_box_pack_start(GTK_BOX(box_vertical),texto,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(box_vertical),box_horizontal,FALSE,FALSE,0);
=09
gtk_container_add(GTK_CONTAINER(ventana),box_vertical);
=09
=09
=09
gtk_widget_show(ventana);
gtk_widget_show(box_vertical);
gtk_widget_show(box_horizontal);
gtk_widget_show(texto);
gtk_widget_show(si);
gtk_widget_show(no);
=09
=
gtk_signal_connect(GTK_OBJECT(si),"clicked",GTK_SIGNAL_FUNC(activar_guard=
ar),ventana);
=
gtk_signal_connect(GTK_OBJECT(no),"clicked",GTK_SIGNAL_FUNC(destruir_dial=
ogo),ventana);
gtk_signal_connect(GTK_OBJECT(ventana),"destroy",
GTK_SIGNAL_FUNC(destruir_dialogo),ventana);
=
gtk_signal_connect(GTK_OBJECT(ventana),"delete_event",GTK_SIGNAL_FUNC(del=
ete_event),NULL); =20
=09
}
void guardar_callback() {
=20
int columna; =20
MYSQL_RES * resultado;
char * pedidos[12];
int nfor;
=20
entries[0] =3D gtk_entry_get_text(GTK_ENTRY(entry_customer_id));
if (!strcmp(entries[0],"")||!is_int(entries[0])) {
LIMPIAR_STATUS_BAR;
gtk_statusbar_push(GTK_STATUSBAR(status),contexto,
"No se ha podido salvar. Introduce un =
n=FAmero de cliente v=E1lido");
} else {
LIMPIAR_STATUS_BAR;
=20
base_de_datos=3Dmysql_init(NULL);
entries[1] =3D gtk_entry_get_text(GTK_ENTRY(entry_customer_name));
entries[2] =3D gtk_entry_get_text(GTK_ENTRY(entry_responsable));
entries[3] =3D =
gtk_entry_get_text(GTK_ENTRY(entry_customer_street));
entries[4] =3D =
gtk_entry_get_text(GTK_ENTRY(entry_customer_phone));
entries[5] =3D =
gtk_entry_get_text(GTK_ENTRY(entry_customer_fax));
entries[6] =3D =
gtk_entry_get_text(GTK_ENTRY(entry_customer_city));
entries[7] =3D =
gtk_entry_get_text(GTK_ENTRY(entry_customer_provincia));
entries[8] =3D =
gtk_entry_get_text(GTK_ENTRY(entry_customer_postal_code));
entries[9] =3D =
gtk_entry_get_text(GTK_ENTRY(entry_customer_dias_visita));
entries[10] =3D gtk_entry_get_text(GTK_ENTRY(entry_compra));
entries[11] =3D gtk_entry_get_text(GTK_ENTRY(entry_tecn));
entries[12] =3D gtk_entry_get_text(GTK_ENTRY(entry_pago));
entries[13] =3D gtk_entry_get_text(GTK_ENTRY(entry_actividad));
=09
=20
if (existe(entries[0],base_de_datos))=20
{
dialogo_guardar();=09
=09
}
else=20
{=09
insertar_datos_en_BBDD(entries,base_de_datos);
=09
for (nfor =3D 0; nfor < n; nfor++) {
gtk_clist_get_text(GTK_CLIST(lista), nfor,0, &pedidos[0]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,1, &pedidos[1]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,2, &pedidos[2]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,3, &pedidos[3]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,4, &pedidos[4]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,5, &pedidos[5]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,6, &pedidos[6]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,7, &pedidos[7]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,8, &pedidos[8]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,9, &pedidos[9]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,10, &pedidos[10]);
gtk_clist_get_text(GTK_CLIST(lista), nfor,11, &pedidos[11]);
insertar_pedido_en_BBDD(entries[0],pedidos,base_de_datos); =20
}
gtk_statusbar_push(GTK_STATUSBAR(status),contexto,"Registro guardado =
con =E9xito");
}
=09
mysql_close(base_de_datos);
}
}
void acerca_callback() {
GtkWidget * window_acerca;
GtkWidget * vbox_aux;
GtkWidget * boton_cerrar;
GtkWidget * label_aux;
LIMPIAR_STATUS_BAR;
window_acerca =3D gtk_window_new(GTK_WINDOW_DIALOG);
gtk_window_set_modal(GTK_WINDOW(window_acerca),TRUE);
gtk_container_set_border_width(GTK_CONTAINER(window_acerca),10);
gtk_window_set_title(GTK_WINDOW(window_acerca),"Acerca...");
gtk_window_set_policy(GTK_WINDOW(window_acerca),FALSE,FALSE,TRUE);
boton_cerrar =3D gtk_button_new_with_label("Cerrar");
label_aux =3D gtk_label_new("NORTON v1.0 [Pinguins]\nPropiedad =
intelectual de Daniel Perez Alcazar y David Bernal Casas\nLicenciado =
bajo la licencia GPL, mas informaci=F3n: www.fsf.org");
gtk_label_set_justify(GTK_LABEL(label_aux),GTK_JUSTIFY_FILL);
vbox_aux =3D gtk_vbox_new(FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox_aux),label_aux,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox_aux),boton_cerrar,FALSE,FALSE,0);
gtk_box_set_spacing(GTK_BOX(vbox_aux),5);
gtk_container_add(GTK_CONTAINER(window_acerca),vbox_aux);
gtk_widget_show(window_acerca);
gtk_widget_show(vbox_aux);
gtk_widget_show(label_aux);
gtk_widget_show(boton_cerrar);
gtk_signal_connect(GTK_OBJECT(boton_cerrar),"clicked",
GTK_SIGNAL_FUNC(cerrar),NULL);
}
void fila_seleccionada(GtkWidget * widget, gint row, gint column,
GdkEventButton * event, gpointer data) {
fila =3D row;
LIMPIAR_STATUS_BAR;
}
void fila_deseleccionada(GtkWidget * widget, gint row, gint =
column,
GdkEventButton * event, gpointer data) {
fila =3D -1;
LIMPIAR_STATUS_BAR;
}
void borrar_entrada() {
LIMPIAR_STATUS_BAR;
if (n > 0 && fila >=3D 0) {
gtk_clist_remove(GTK_CLIST(lista), fila);
n--;
}
fila =3D -1; // Para evitar que quede ninguna fila seleccionada.
}
void incorporar() {
gchar * incorporados[12];
incorporados[0]=3Dgtk_entry_get_text(GTK_ENTRY(entry_maquina));
incorporados[1]=3Dgtk_entry_get_text(GTK_ENTRY(entry_muela));
incorporados[2]=3Dgtk_entry_get_text(GTK_ENTRY(entry_forma_plano));
incorporados[3]=3Dgtk_entry_get_text(GTK_ENTRY(entry_end_use));
incorporados[4]=3Dgtk_entry_get_text(GTK_ENTRY(entry_velocidad));
incorporados[5]=3Dgtk_entry_get_text(GTK_ENTRY(entry_potenc));
incorporados[6]=3Dgtk_entry_get_text(GTK_ENTRY(entry_esp1));
incorporados[7]=3Dgtk_entry_get_text(GTK_ENTRY(entry_precio1));
incorporados[8]=3Dgtk_entry_get_text(GTK_ENTRY(entry_share1));
incorporados[9]=3Dgtk_entry_get_text(GTK_ENTRY(entry_esp2));
incorporados[10]=3Dgtk_entry_get_text(GTK_ENTRY(entry_precio2));
incorporados[11]=3Dgtk_entry_get_text(GTK_ENTRY(entry_share2));
=
if(strcmp(incorporados[0],"")||strcmp(incorporados[1],"")||strcmp(incorpo=
rados[2],"")
=
||strcmp(incorporados[3],"")||strcmp(incorporados[4],"")||strcmp(incorpor=
ados[5],"")
=
||strcmp(incorporados[6],"")||strcmp(incorporados[7],"")||strcmp(incorpor=
ados[8],"")
=
||strcmp(incorporados[9],"")||strcmp(incorporados[10],"")||strcmp(incorpo=
rados[11],"")) {
gtk_clist_append(GTK_CLIST(lista), incorporados);
n++;
}
gtk_widget_destroy(window_nueva_entrada);
}
void nueva_entrada() {
GtkWidget * label_maquina;
GtkWidget * label_muela;
GtkWidget * label_forma_plano;
GtkWidget * label_end_use;
GtkWidget * label_velocidad;
GtkWidget * label_potenc;
GtkWidget * label_esp1;
GtkWidget * label_precio1;
GtkWidget * label_share1;
GtkWidget * label_esp2;
GtkWidget * label_precio2;
GtkWidget * label_share2;
GtkWidget * table_of_nueva_entrada;
GtkWidget * boton_cerrar;
GtkWidget * boton_incorporar;
LIMPIAR_STATUS_BAR;
window_nueva_entrada =3D gtk_window_new(GTK_WINDOW_DIALOG); /*para =
diferenciar de TOP_LEVEL, para que no tenga prioridad */
=
gtk_window_set_policy(GTK_WINDOW(window_nueva_entrada),FALSE,FALSE,TRUE);=
gtk_window_set_title(GTK_WINDOW(window_nueva_entrada),
"Introduccion de datos");
gtk_window_set_modal(GTK_WINDOW(window_nueva_entrada),TRUE);
table_of_nueva_entrada =3D gtk_table_new(4, 7, FALSE);
entry_maquina =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_maquina, 0, 1, 1, 2);
label_maquina =3D gtk_label_new("MAQUINA");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_maquina, 0, 1, 0, 1);
entry_muela =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_muela, 1, 2, 1, 2);
label_muela =3D gtk_label_new("MUELA");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_muela, 1, 2, 0, 1);
entry_forma_plano =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_forma_plano, 2, 3, 1, 2);
label_forma_plano =3D gtk_label_new("FORMA/PLANO");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_forma_plano, 2, 3, 0, 1);
entry_end_use =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_end_use, 3, 4, 1, 2);
label_end_use =3D gtk_label_new("END USE");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_end_use, 3, 4, 0, 1);
entry_velocidad =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_velocidad, 0, 1, 3, 4);
label_velocidad =3D gtk_label_new("VELOCIDAD");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_velocidad, 0, 1, 2, 3);
entry_potenc =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_potenc, 1, 2, 3, 4);
label_potenc =3D gtk_label_new("POTENC.");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_potenc, 1, 2, 2, 3);
entry_esp1 =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_esp1, 2, 3, 3, 4);
label_esp1 =3D gtk_label_new("ESP. 1");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_esp1, 2, 3, 2, 3);
entry_precio1 =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_precio1, 3, 4, 3, 4);
label_precio1 =3D gtk_label_new("PRECIO 1");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_precio1, 3, 4, 2, 3);
entry_share1 =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_share1, 0, 1, 5, 6);
label_share1 =3D gtk_label_new("SHARE 1%");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_share1, 0, 1, 4, 5);
entry_esp2 =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_esp2, 1, 2, 5, 6);
label_esp2 =3D gtk_label_new("ESP. 2");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_esp2, 1, 2, 4, 5);
entry_precio2 =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_precio2, 2, 3, 5, 6);
label_precio2 =3D gtk_label_new("PRECIO 2");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_precio2, 2, 3, 4, 5);
entry_share2 =3D gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
entry_share2, 3, 4, 5, 6);
label_share2 =3D gtk_label_new("SHARE 2");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
label_share2, 3, 4, 4, 5);
boton_cerrar =3D gtk_button_new_with_label(" Cerrar ");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
boton_cerrar, 0, 1, 6, 7);
boton_incorporar =3D
gtk_button_new_with_label(" Incorporar datos \n a la tabla ");
gtk_table_attach_defaults(GTK_TABLE(table_of_nueva_entrada),
boton_incorporar, 3, 4, 6, 7);
gtk_container_add(GTK_CONTAINER(window_nueva_entrada),
table_of_nueva_entrada);
gtk_container_border_width(GTK_CONTAINER(window_nueva_entrada),
10);
gtk_widget_show(entry_maquina);
gtk_widget_show(entry_muela);
gtk_widget_show(entry_forma_plano);
gtk_widget_show(entry_end_use);
gtk_widget_show(entry_velocidad);
gtk_widget_show(entry_potenc);
gtk_widget_show(entry_esp1);
gtk_widget_show(entry_precio1);
gtk_widget_show(entry_share1);
gtk_widget_show(entry_esp2);
gtk_widget_show(entry_precio2);
gtk_widget_show(entry_share2);
gtk_widget_show(label_maquina);
gtk_widget_show(label_muela);
gtk_widget_show(label_forma_plano);
gtk_widget_show(label_end_use);
gtk_widget_show(label_velocidad);
gtk_widget_show(label_potenc);
gtk_widget_show(label_esp1);
gtk_widget_show(label_precio1);
gtk_widget_show(label_share1);
gtk_widget_show(label_esp2);
gtk_widget_show(label_precio2);
gtk_widget_show(label_share2);
gtk_widget_show(table_of_nueva_entrada);
gtk_widget_show(window_nueva_entrada);
gtk_widget_show(boton_cerrar);
gtk_widget_show(boton_incorporar);
gtk_signal_connect(GTK_OBJECT(boton_cerrar), "clicked",
GTK_SIGNAL_FUNC(cerrar), NULL);
gtk_signal_connect(GTK_OBJECT(boton_incorporar), "clicked",
GTK_SIGNAL_FUNC(incorporar), NULL);
}
/* Funcion principal*/
int main(int argc, char *argv[]) {
/*Declaro todo*/
GtkWidget * window;
GtkWidget * table;
/* <-----Datos-----> */
GtkWidget * label_responsable;
GtkWidget * label_customer_id;
GtkWidget * label_customer_name;
GtkWidget * label_customer_street;
GtkWidget * label_customer_phone;
GtkWidget * label_customer_fax;
GtkWidget * label_customer_city;
GtkWidget * label_customer_provincia;
GtkWidget * label_customer_postal_code;
GtkWidget * label_customer_dias_visita;
GtkWidget * label_compra;
GtkWidget * label_tecn;
GtkWidget * label_pago;
GtkWidget * label_actividad;
gchar * titles[12] =3D {
"MAQUINA", "MUELA", "FORMA/PLANO", "END =
USE", "VELOCIDAD",
"POTENCIA", "ESP. 1", "PRECIO 1", "SHARE =
1%", "ESP. 2",
"PRECIO 2", "SHARE 2"};
GtkWidget * vbox_menu_bar;
GtkWidget * menu_bar;
GtkWidget * submenu_registro;
GtkWidget * menu_registro;
GtkWidget * salvar;
GtkWidget * salir;
GtkWidget * vaciar;
GtkWidget * submenu_ayuda;
GtkWidget * menu_ayuda;
GtkWidget * acerca;
=20
GtkWidget * submenu_busquedas;
GtkWidget * menu_busquedas;
GtkWidget * buscar;
GtkWidget * hbox_entries_clist;
/* <-----Scrolled Window (la de la lista y la "meta")+ =
viewport-----> */
GtkWidget * scrolled_window;
GtkWidget * meta_scrolled_window;
// GtkWidget * viewport;
/* Botones */
GtkWidget * boton_nueva_entrada;
GtkWidget * boton_borrar_entrada;
GtkWidget * botones;
GtkWidget * vbox_clist_botones;
gtk_init(&argc, &argv);
window =3D gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 730, 500);
hbox_entries_clist=3Dgtk_hbox_new(FALSE,0);
table =3D gtk_table_new(2, 14, FALSE);
label_customer_id =3D gtk_label_new("No. de Cliente");
entry_customer_id =3D gtk_entry_new_with_max_length(6);
gtk_table_attach(GTK_TABLE(table), label_customer_id, 0, 1, 0, 1,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK); =
/*En la posicion 0 a la izquierda, que ocupa 1 (la celda 2 ocuparia 2!), =
0 desde arriba y que ocupa 1 */
gtk_table_attach(GTK_TABLE(table), entry_customer_id, 1, 2, 0, 1,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_id);
gtk_widget_show(entry_customer_id);
label_customer_name =3D gtk_label_new("Cliente");
entry_customer_name =3D gtk_entry_new_with_max_length(45);
gtk_table_attach(GTK_TABLE(table), label_customer_name, 0, 1, 1, 2,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_name, 1, 2, 1, 2,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_name);
gtk_widget_show(entry_customer_name);
label_responsable =3D gtk_label_new("Responsable");
entry_responsable =3D gtk_entry_new_with_max_length(45);
gtk_table_attach(GTK_TABLE(table), label_responsable, 0, 1, 2, 3,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_responsable, 1, 2, 2, 3,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_responsable);
gtk_widget_show(entry_responsable);
label_customer_street =3D gtk_label_new("Direcci=F3n");
entry_customer_street =3D gtk_entry_new_with_max_length(35);
gtk_table_attach(GTK_TABLE(table), label_customer_street, 0, 1, 3, =
4,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_street, 1, 2, 3, =
4,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_street);
gtk_widget_show(entry_customer_street);
label_customer_phone =3D gtk_label_new("Tel=82fono");
entry_customer_phone =3D gtk_entry_new_with_max_length(13);
gtk_table_attach(GTK_TABLE(table), label_customer_phone, 0, 1, 4, 5,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_phone, 1, 2, 4, 5,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_phone);
gtk_widget_show(entry_customer_phone);
label_customer_fax =3D gtk_label_new("Fax");
entry_customer_fax =3D gtk_entry_new_with_max_length(13);
gtk_table_attach(GTK_TABLE(table), label_customer_fax, 0, 1, 5, 6,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_fax, 1, 2, 5, 6,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_fax);
gtk_widget_show(entry_customer_fax);
label_customer_city =3D gtk_label_new("Localidad");
entry_customer_city =3D gtk_entry_new_with_max_length(20);
gtk_table_attach(GTK_TABLE(table), label_customer_city, 0, 1, 6, 7,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_city, 1, 2, 6, 7,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_city);
gtk_widget_show(entry_customer_city);
label_customer_provincia =3D gtk_label_new("Provincia");
entry_customer_provincia =3D gtk_entry_new_with_max_length(20);
gtk_table_attach(GTK_TABLE(table), label_customer_provincia, 0, 1, =
7, 8,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_provincia, 1, 2, =
7, 8,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_provincia);
gtk_widget_show(entry_customer_provincia);
label_customer_postal_code =3D gtk_label_new("Codigo Postal");
entry_customer_postal_code =3D gtk_entry_new_with_max_length(5);
gtk_table_attach(GTK_TABLE(table), label_customer_postal_code, 0, 1, =
8, 9,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK,GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_postal_code, 1, 2, =
8, 9,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_customer_postal_code);
gtk_widget_show(entry_customer_postal_code);
label_customer_dias_visita =3D gtk_label_new("Dias Visita");
entry_customer_dias_visita =3D gtk_entry_new_with_max_length(30);
gtk_table_attach(GTK_TABLE(table), label_customer_dias_visita, 0, 1, =
9, 10,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK,GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_customer_dias_visita, 1, 2, =
9, 10,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK,GTK_SHRINK);
gtk_widget_show(label_customer_dias_visita);
gtk_widget_show(entry_customer_dias_visita);
label_compra =3D gtk_label_new("Compra");
entry_compra =3D gtk_entry_new_with_max_length(20);
gtk_table_attach(GTK_TABLE(table), label_compra, 0, 1, 10, 11,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_compra, 1, 2, 10, 11,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_compra);
gtk_widget_show(entry_compra);
label_tecn =3D gtk_label_new("T=82cnico");
entry_tecn =3D gtk_entry_new_with_max_length(20);
gtk_table_attach(GTK_TABLE(table), label_tecn, 0, 1, 11, 12,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_tecn, 1, 2, 11, 12,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_tecn);
gtk_widget_show(entry_tecn);
label_pago =3D gtk_label_new("Pago");
entry_pago =3D gtk_entry_new_with_max_length(15);
gtk_table_attach(GTK_TABLE(table), label_pago, 0, 1, 12, 13,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_pago, 1, 2, 12, 13,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_pago);
gtk_widget_show(entry_pago);
label_actividad =3D gtk_label_new("Actividad");
entry_actividad =3D gtk_entry_new_with_max_length(50);
gtk_table_attach(GTK_TABLE(table), label_actividad, 0, 1, 13, 14,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_table_attach(GTK_TABLE(table), entry_actividad, 1, 2, 13, 14,
GTK_SHRINK, GTK_SHRINK, GTK_SHRINK, GTK_SHRINK);
gtk_widget_show(label_actividad);
gtk_widget_show(entry_actividad);
/* Empaquetamiento de las entries y las labels y la label */
gtk_box_pack_start(GTK_BOX(hbox_entries_clist),table,FALSE,FALSE,0);
vbox_clist_botones =3D gtk_vbox_new(FALSE,0);
/* Botones relacionados con el Clist */
botones =3D gtk_hbox_new(TRUE, 0);
boton_nueva_entrada =3D gtk_button_new_with_label(" Introducir \n =
fila ");
gtk_widget_show(boton_nueva_entrada);
boton_borrar_entrada =3D gtk_button_new_with_label(" Eliminar \n =
entrada ");
gtk_widget_show(boton_borrar_entrada);
gtk_box_pack_start(GTK_BOX(botones), boton_nueva_entrada, FALSE,
TRUE, 0);
gtk_box_pack_start(GTK_BOX(botones), boton_borrar_entrada, FALSE,
TRUE, 0);
gtk_widget_show(botones);
/* CList */
lista =3D gtk_clist_new_with_titles(12, titles);
scrolled_window =3D gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
GTK_POLICY_AUTOMATIC, =
GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(scrolled_window), lista);
gtk_widget_show(scrolled_window);
gtk_widget_show(lista);
/* Empaquetamiento del Clist y de los botones */
=
gtk_box_pack_start(GTK_BOX(vbox_clist_botones),scrolled_window,TRUE,TRUE,=
0);
=
gtk_box_pack_start(GTK_BOX(vbox_clist_botones),botones,FALSE,TRUE,0);
gtk_widget_show(vbox_clist_botones);
=
gtk_box_pack_start(GTK_BOX(hbox_entries_clist),vbox_clist_botones,TRUE,TR=
UE,0);
gtk_window_set_title(GTK_WINDOW(window),
"NORTON [Version 0.1.0 (Pinguins)]");
gtk_window_set_default_size(GTK_WINDOW(window), 700, 500);
meta_scrolled_window =3D gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
(meta_scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
=
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(meta_scrolled_w=
indow),
hbox_entries_clist);
/* Creamos el men=FA */
menu_bar =3D gtk_menu_bar_new();
submenu_registro =3D gtk_menu_new();
salvar =3D gtk_menu_item_new_with_label("Guardar registro actual");
gtk_menu_append(GTK_MENU(submenu_registro),salvar);
gtk_widget_show(salvar);
vaciar =3D gtk_menu_item_new_with_label("Ficha nueva");
gtk_menu_append(GTK_MENU(submenu_registro),vaciar);
gtk_widget_show(vaciar);
salir =3D gtk_menu_item_new_with_label("Salir");
gtk_menu_append(GTK_MENU(submenu_registro),salir);
gtk_widget_show(salir);
menu_registro =3D gtk_menu_item_new_with_label("Registros");
=
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_registro),submenu_registro);=
gtk_widget_show(menu_registro);
submenu_ayuda =3D gtk_menu_new();
acerca =3D gtk_menu_item_new_with_label("Acerca...");
gtk_menu_append(GTK_MENU(submenu_ayuda),acerca);
gtk_widget_show(acerca);
menu_ayuda =3D gtk_menu_item_new_with_label("Ayuda");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_ayuda),submenu_ayuda);
gtk_menu_item_right_justify(GTK_MENU_ITEM(menu_ayuda));
gtk_widget_show(menu_ayuda);
submenu_busquedas =3D gtk_menu_new();
buscar =3D gtk_menu_item_new_with_label("Buscar...");
gtk_menu_append(GTK_MENU(submenu_busquedas),buscar);
gtk_widget_show(buscar);
menu_busquedas =3D gtk_menu_item_new_with_label("B=FAsquedas");
=
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_busquedas),submenu_busquedas=
);
gtk_widget_show(menu_busquedas);
gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),menu_registro);
gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),menu_busquedas);
gtk_menu_bar_append(GTK_MENU_BAR(menu_bar),menu_ayuda);
gtk_widget_show(menu_bar);
/* Creamos la status bar */
status =3D gtk_statusbar_new();
contexto=3Dgtk_statusbar_get_context_id(GTK_STATUSBAR(status),"Barra =
de estado");
gtk_widget_show(status);
/* Empaquetamos los men=A3s y lo dem=A0s*/
vbox_menu_bar=3Dgtk_vbox_new(FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox_menu_bar),menu_bar,FALSE,FALSE,0);
=
gtk_box_pack_start(GTK_BOX(vbox_menu_bar),meta_scrolled_window,TRUE,TRUE,=
0);
gtk_box_pack_start(GTK_BOX(vbox_menu_bar),status,FALSE,FALSE,0);
gtk_widget_show(vbox_menu_bar);
gtk_container_add(GTK_CONTAINER(window), vbox_menu_bar);
// gtk_container_set_border_width(GTK_CONTAINER(window), 10);
gtk_widget_show(table);
gtk_widget_show(hbox_entries_clist);
gtk_widget_show(window);
gtk_widget_show(meta_scrolled_window);
/*SE=D1ALES*/
gtk_signal_connect(GTK_OBJECT(window),"destroy",
GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
gtk_signal_connect(GTK_OBJECT(window), "delete_event",
GTK_SIGNAL_FUNC(delete_event), NULL);
gtk_signal_connect(GTK_OBJECT(salir), "activate",
GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
gtk_signal_connect(GTK_OBJECT(lista), "select_row",
GTK_SIGNAL_FUNC(fila_seleccionada), NULL);
gtk_signal_connect(GTK_OBJECT(lista), "unselect_row",
GTK_SIGNAL_FUNC(fila_deseleccionada), NULL);
gtk_signal_connect(GTK_OBJECT(boton_nueva_entrada), "clicked",
GTK_SIGNAL_FUNC(nueva_entrada), NULL);
gtk_signal_connect(GTK_OBJECT(boton_borrar_entrada), "clicked",
GTK_SIGNAL_FUNC(borrar_entrada), NULL);
gtk_signal_connect(GTK_OBJECT(acerca),"activate",
GTK_SIGNAL_FUNC(acerca_callback),NULL);
gtk_signal_connect(GTK_OBJECT(salvar),"activate",
GTK_SIGNAL_FUNC(guardar_callback),NULL);
gtk_signal_connect(GTK_OBJECT(vaciar),"activate",
GTK_SIGNAL_FUNC(vaciar_callback),NULL);
gtk_main();
return (0);
}
------------10095A920C0255C
Content-Type: application/octet-stream; name="mysql_procs.c"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="mysql_procs.c"
#include "mysql_procs.h"
MYSQL_RES *busqueda_por_datos(char campo[],char valor[],MYSQL =
*base_de_datos,int estricto)
{
char peticion[MAXIMO]; /* Tengo que declararlo antes porque si no =
peta! */
MYSQL_RES *resultado;
=20
peticion[0]=3D'\0';
strcat(peticion,"SELECT * FROM datos WHERE ");=09
strcat(peticion, campo);
strcat(peticion," LIKE ");
strcat(peticion, "\"");
if (!estricto) strcat(peticion, "%");
strcat(peticion,valor);
if (!estricto) strcat(peticion, "%");
strcat(peticion,"\" ORDER BY id");
=20
printf("Hemos enviado la petici=F3n %s\n",peticion);
if =
(!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0))
{
printf("ERROR No se pudo conectar a la base de datos. Puede que =
'mysqld' haya ca=EDdo.\n");
return;
}=20
if(mysql_query(base_de_datos,peticion)=3D=3D0)
{
resultado=3Dmysql_store_result(base_de_datos);
}
else
{
if (base_de_datos !=3D NULL)
{
printf("ERROR Buscando por datos de cliente: falta de forma en la =
petici=F3n.\n");
return;
}
else=20
{
printf("ERROR No se ha cargado correctamente la base de datos.\n");
return;
}
}
if(mysql_num_rows(resultado)=3D=3D(unsigned long)0) resultado=3DNULL;
printf("Hemos acabado la busqueda!\n");
return resultado;
}
MYSQL_RES *busqueda_por_pedidos(char campo[],char valor[],MYSQL =
*base_de_datos)
{
char peticion[MAXIMO];
MYSQL_RES * resultado;
=20
strcat(peticion,"CREATE TEMPORARY TABLE tmp SELECT id FROM compra =
WHERE ");
strcat(peticion,campo);
strcat(peticion," LIKE ");
strcat(peticion,"\"%");
strcat(peticion,valor);
strcat(peticion,"%\" ORDER BY id");
if =
(!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0))
{
printf("ERROR No se pudo conectar a la base de datos. Puede que =
'mysqld' haya ca=EDdo.\n");
return;
}=20
=20
if(mysql_query(base_de_datos,peticion) !=3D 0)
{
printf("ERROR Con la creaci=F3n de la tabla temporal para buscar por =
Pedidos.\n");
return;
}
peticion[0]=3D'\0';=20
strcat(peticion,"SELECT * FROM datos,tmp WHERE datos.id =3D tmp.id =
ORDER BY datos.id");
if(mysql_query(base_de_datos,peticion)=3D=3D0)
{
resultado=3Dmysql_store_result(base_de_datos);
peticion[0]=3D'\0';
strcat(peticion,"DROP TABLE tmp");
if(mysql_query(base_de_datos,peticion)!=3D0)
{
printf("ERROR No se pudo liberar de memoria la tabla temporal.\n");
return;
}
}
else
{
if (base_de_datos !=3D NULL)
{
printf("ERROR Buscando por datos de cliente: falta de forma en la =
petici=F3n.\n");
return;
}
else=20
{
printf("ERROR No se ha cargado correctamente la base de datos.\n");
return;
}
}
=20
if(mysql_num_rows(resultado)=3D=3D(unsigned long)0) =
resultado=3DNULL;
=20
return resultado;
}
int existe(char * id,MYSQL * base_de_datos)
{
if(busqueda_por_datos("id",id,base_de_datos,TRUE)=3D=3DNULL) return 0;
else /* Ya existe el registro*/ return 1;
=09
}
=20
void insertar_datos_en_BBDD(char * entries_datos[],MYSQL * =
base_de_datos)
{
char peticion[MAXIMO];
printf("Vamos a insertar");
=09
sprintf(peticion,"INSERT INTO datos VALUES =
('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",=
entries_datos[0],entries_datos[1],entries_datos[2],entries_datos[3],
entries_datos[4],entries_datos[5],entries_datos[6],entries_datos[7],
=
entries_datos[8],entries_datos[9],entries_datos[10],entries_datos[11],
entries_datos[12],entries_datos[13]);
=09
printf("La peticion es: %s",peticion); =20
=09
/* if =
(!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0))=20
{
printf("ERROR No se pudo conectar a la base de datos. Puede que =
'mysqld' haya ca=EDdo.\n");
return;
}
=09
*/
if(mysql_query(base_de_datos,peticion)!=3D0)
{
if (base_de_datos !=3D NULL)=20
{
printf("ERROR Buscando por datos de cliente: falta de forma en la =
petici=F3n.\n");
return;
}
else =20
{
printf("ERROR No se ha cargado correctamente la base de datos.\n");
return;
}=09
}
}
void insertar_pedido_en_BBDD(char * id,char *pedido[],MYSQL * =
base_de_datos)
{
char peticion[MAXIMO];
=09
sprintf(peticion,"INSERT INTO compra VALUES =
('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
id,pedido[0],pedido[1],pedido[2],pedido[3],
pedido[4],pedido[5],pedido[6],pedido[7],
pedido[8],pedido[9],pedido[10],pedido[11]);
=20
/*if =
(!mysql_real_connect(base_de_datos,NULL,NULL,NULL,"Norton",0,NULL,0)) =
printf("ERROR No se pudo conectar a la base de datos. Puede que 'mysqld' =
haya ca=EDdo.\n");*/
=09
if(mysql_query(base_de_datos,peticion)!=3D0)
{
if (base_de_datos !=3D NULL)=20
{
printf("ERROR Buscando por datos de cliente: falta de forma en la =
petici=F3n.\n");
return;
}
else =20
{
printf("ERROR No se ha cargado correctamente la base de datos.\n");
return;
}
}
}
void borra_registro(char * id,MYSQL * base_de_datos)
{
char peticion[MAXIMO];
peticion[0]=3D'\0';
strcat(peticion,"DELETE FROM datos WHERE id=3D\"");
strcat(peticion,id);
strcat(peticion,"\"");
printf("Vamos a borrar con: %s\n",peticion);
if(mysql_query(base_de_datos,peticion)!=3D0)
{
if (base_de_datos !=3D NULL)=20
{
printf("ERROR Buscando por datos de cliente: falta de forma en la =
petici=F3n.\n");
return;
}
else
{
printf("ERROR No se ha cargado correctamente la base de datos.\n");
return;
}
}
peticion[0]=3D'\0';
strcat(peticion,"DELETE FROM compra WHERE id=3D\"");
strcat(peticion,id);
strcat(peticion,"\"");
printf("Vamos a borrar con: %s\n",peticion);
if(mysql_query(base_de_datos,peticion)!=3D0)
{
if (base_de_datos !=3D NULL)=20
{
printf("ERROR Buscando por datos de cliente: falta de forma en la =
petici=F3n.\n");
return;
}
else
{
printf("ERROR No se ha cargado correctamente la base de datos.\n");
return;
}
}
printf("Borrado!");
}
------------10095A920C0255C
Content-Type: application/octet-stream; name="mysql_procs.h"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="mysql_procs.h"
#ifndef _STDIO_
#define _STDIO_
#include <stdio.h>
#endif
#ifndef _STRING_
#define _STRING_
#include <string.h>
#endif
#if (defined(_WIN32) || defined(_WIN64))=20
#include <windows.h>
#endif
#ifndef _MYSQL_
#define _MYSQL_
#include <mysql/mysql.h>
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef TRUE
#define FALSE 0
#endif
#define MAXIMO 500 /* No funciona en windows!!Tama=F1o m=E1ximo del =
buffer. El de MySQL es de 16 KB, por lo que no problem :-) */
MYSQL_RES *busqueda_por_datos(char campo[],char valor[],MYSQL =
*base_de_datos,int estricto);
MYSQL_RES *busqueda_por_pedidos(char campo[],char valor[],MYSQL =
*base_de_datos);
int existe(char * id,MYSQL * base_de_datos);
void insertar_pedido_en_BBDD(char * id,char *pedido[],MYSQL * =
base_de_datos);
void insertar_datos_en_BBDD(char *entries_datos[],MYSQL * =
base_de_datos);
void borra_registro(char * id,MYSQL * base_de_datos);
------------10095A920C0255C
Content-Type: text/plain; charset=us-ascii
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
------------10095A920C0255C--
- Raw text -