Visual Basic.NET - Campo Fecha como clave primaria

 
Vista:

Campo Fecha como clave primaria

Publicado por Jesús Valdivieso (8 intervenciones) el 13/03/2006 10:12:43
Hola a todos.

Tengo el siguiente problema con una tabla en una base de datos SQLServer 2000. La tabla tiene varios campos caracter y un campo fecha (smalldatetime). Para formar el campo primary key, uso dos campos de tipo caracter, más el campo fecha, teniendo el siguiente problema. Utilizo un dataset y mediante el método Find de la colección Rows, localizo un registro determinado. Por ejemplo:

dim Clave(2) as object

'dtrAux es un datarow auxiliar que me posiciona en una fila de una tabla de clientes de la que 'obtengo los datos para crear la clave principal en la tabla donde tengo el problema. Este datarow 'tiene datos coherente.

Clave (0) = dtrAux("Cliente").tostring
Clave (1) = dtrAux("Pedido").tostring
Clave (2) = dtrAux("Fecha").tostring

'Ahora busco la clave, dtrPedidos es un datarow bien definido al principio del procedimiento
dtrPedidos = dtsdataset.Tables("Pedidos").Rows.Find(Clave)
if dtrPedidos is Nothing then
....
.... resto del código
....

Pues bien el error que me da, es cuando existen registros en la tabla de Pedidos, y comienza la búsqueda (método Find). El error que arroja es 'La conversión especificada no es válida'. He probado a cambiar la clave(2), y pasarle en vez la fecha en formato dd/mm/yyyy, al formato ANSI, que es yyyymmdd y tampoco va. Ya no sé qué más puede ocurrir. Si alguien sabe cómo puedo solucionar el problema, le agradecería su ayuda.

Gracias por vuestra ayuda.

Saludos, Jesús .....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Campo Fecha como clave primaria

Publicado por thessen (298 intervenciones) el 13/03/2006 14:47:29
Quiza me equivoque (nunca he realizado las busquedas directamente en el dataset) pero no deberias ponerlo asi?:

dtrPedidos = dtsdataset.Tables("Pedidos").Rows.Find(Clave(2))

ya que el método find busca el valor pasado en la clave de la tabla, en cambio tu le estas pasando un array de valores...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo Fecha como clave primaria

Publicado por Jesús Valdivieso (8 intervenciones) el 13/03/2006 15:16:24
Hola.

Le paso todo el array de valores, puesto que la clave primaria, está compuesta por tres campos de la tabla, y por tanto con el array lo que se hace es componer los valores que busco de la clave principal.

Si me permites preguntarte, ¿si no usas find, cómo lo haces para buscar un registro en concreto? ¿lo haces con un Select?

Saludos, Jesús .....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo Fecha como clave primaria

Publicado por thessen (298 intervenciones) el 14/03/2006 09:12:00
Por ahora no me he visto con la necesidad de utilizar el Find, de momento he tenido que localizar los registros con una Select directamente sobre la tabla, asi que no creo que te pueda ayudar mas de lo que ya he intentado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar