Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2003
vinny vinny is offline
Registrado
 
Registrado: may 2003
Posts: 7
Poder: 0
vinny Va por buen camino
Extraccion valores MySQL

Hola de nuevo,

No se si estas preguntas deberian ubicarse mejor en otro grupo del foro, en tal caso, avisarme.

Realizado un SELECT de varios campos procedo a hacer comparaciones con valores de los campos para hacer unas tareas u otras.

Algunos de los campos extraidos no tiene valor (son NULL), entonces a la hora de hacer una comparación con dichos campos, la aplicación aborta dandome un error de "Access violation at address... Read of address 00000000".

La comparacion es:

if (Row[Voz3]='*') AND (cantado = false) then

donde el valor del campo Voz3 es NULL

Entonces intuyo que el problema se debe al comparar un null con cualquier valor, ya que las comparaciones anteriores no fallan y los campos tienen valor.

Una posible solución que se me ocurre es no admitir valores NULL en la base de datos y utilizar algun comodin como NULL, pero no me parece muy elegante.

Cómo se puede solventar dicha controversia?

Gracias,
Vicente
Responder Con Cita
  #2  
Antiguo 27-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
prueba con..

if not Row.FieldByName('Voz30').IsNull and/or .....

Espero te sirva
Responder Con Cita
  #3  
Antiguo 27-05-2003
vinny vinny is offline
Registrado
 
Registrado: may 2003
Posts: 7
Poder: 0
vinny Va por buen camino
De momento no me ha solucionado el problema, la sintaxis no me la reconoce y como tampoco he tocado antes Delphi, poco puedo hacer por mis propios medios para intentar jugar con algo parecido o buscar funciones similares.

Sigo vendido
Responder Con Cita
  #4  
Antiguo 27-05-2003
vinny vinny is offline
Registrado
 
Registrado: may 2003
Posts: 7
Poder: 0
vinny Va por buen camino
Os adjunto el codigo tal y como lo tengo, asi podrá ser más facil a quien pueda echarme una mano encontrar como puedo reordenar codigo o que funciones puedo utilizar tal y como tengo definidas las variables.
Archivos Adjuntos
Tipo de Archivo: zip codigo.zip (674 Bytes, 30 visitas)
Responder Con Cita
  #5  
Antiguo 27-05-2003
Bacterion Bacterion is offline
Miembro
 
Registrado: may 2003
Posts: 91
Poder: 21
Bacterion Va por buen camino
Es que estás usando "algo" que seguramente va a bajo nivel
Row: PMYSQL_ROW;
(¿Api de MySQL?)
en vez de un dataset normal.
¿Por qué no pruebas a usar un SQLConnection (D6 o superior) con driver MySQL?
Así podras usar los TFields (y por lo tanto el FieldByName) y podrás preguntar si son NULL o no y hacer la comparación en este último caso.
Si te quedas con esas funciones, tendrás que mirar en la ayuda de las mismas o preguntar en el foro de MySQL
Responder Con Cita
  #6  
Antiguo 27-05-2003
vinny vinny is offline
Registrado
 
Registrado: may 2003
Posts: 7
Poder: 0
vinny Va por buen camino
Desconozco el uso de SQL Connection, como hacer conexiones, moverme por los datos, insertar filas...
Responder Con Cita
  #7  
Antiguo 27-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Posteado originalmente por vinny
La comparacion es:

if (Row[Voz3]='*') AND (cantado = false) then

La API de MySql devuelve punteros a nil para los valores null de manera que primero debes checar que Row[Voz3] no sea nil:

Código:
if (Row[Voz3] <> nil) and (Row[Voz3] = '*') and (Cantado = false) then
En general debes tener en cuenta que una estructura como PMYSQL_ROW es un arreglo de punteros PChar por lo que es recomendable traducir primero esos a strings (que es más natutral para Delphi) y de ahí al tipo de datos que requieras.

Un consejo: Es difícil empezar con Delphi y es difícil empezar con MySql pero es más difícil empezar con ambos a la vez. Quizá te convenga buscar las componentes ZEOS (busca en Google) para que puedas acceder fácilmente a MySql y preocuparte ahora más por Delphi.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:58:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi