ADO append con Uniqueidentifier en MSSQL

Post Reply
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

ADO append con Uniqueidentifier en MSSQL

Post by pymsoft »

Manualmente hago asi para agregar un registro con el campo ID del tipo uniqueidentifier: (B85E62C3-DC56-40C0-852A-49F759AC68FB)

Code: Select all

INSERT INTO articoli
  (ID, Sub_ID, codice, descrizione)
  VALUES     (NEWID(), 15, 'uno', 'due')

Alguien sabe como hacerlo con ADO?

Code: Select all

FOR i := 1 TO 5000
    oRs:AddNew()
  //oRs:fields("ID"):VALUE := "NEWID()"
  oRs:fields("Sub_ID"):VALUE := i
  oRs:fields("codice"):value := "COD" + ALLTRIM( STR( i ) )
  oRs:Fields( "descrizione" ):Value := "Descrizione articolo " + ALLTRIM( STR( i ) )
    oRs:Update()
NEXT

Gracias
Pedro Gonzalez
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Fernando,


no puedo usar adordd porque no compila con la version de xharbour que uso yo, que no puedo cambiar porque uso FWH 2.7 que actualizaré apenas me lo permitan. De todos modos, no se si está previsto, pero cuando el campo es del tipo uniqueidentifier hay que llamar a una funcion NewID() para crear el uniqueidentifier, que manualmente se hace "INSERT INTO articoli (ID, codice) VALUES (NewID(), 'codigo uno')"

Mi problema es que con ADO no podia hacerlo en automatico, de todos modos lo he resuelto en este modo:

Code: Select all

  TRY
    oRs:AddNew()
  CATCH oError
    MsgStop(oError:Operation+CRLF+oError:Description,"Ado Connection")
    RETURN NIL   
  END TRY

  TRY
    oRs2 := oConnection:Execute("select newid()")
  CATCH oError
    MsgStop(oError:Operation+CRLF+oError:Description,"Ado Connection")
    RETURN NIL
  END TRY

  cNewID := oRs2:fields(0):value

  oRs:fields("ID"):VALUE := cNewID
  oRs:fields("Sub_ID"):VALUE := i
  oRs:fields("codice"):value := "COD" + ALLTRIM( STR( i ) )
  oRs:Fields( "descrizione" ):Value := "Descrizione articolo " + ALLTRIM( STR( i ) )
  oRs:Fields( "nota1" ):Value := REPLICATE("-=-", 800 )
  oRs:Fields( "nota2" ):Value := REPLICATE("-+-", 800 )
  oRs:Fields( "messaggio" ):Value := REPLICATE(".-.", 800 )

  TRY
    oRs2:close()
  CATCH
  END TRY

Seria bueno preveerlo que en ADORDD (si ya no lo hace) que cuando el campo sea de este tipo, lo genere automaticamente al hacer un append.

Saludos y gracias de tu tiempo.
Pedro Gonzalez
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

Con ado puedes utilizar el metodo Execute del objeto connection.

Code: Select all

oCnn:Execute("INSERT INTO articoli   (ID, Sub_ID, codice, descrizione)   VALUES     (NEWID(), 15, 'uno', 'due') ")
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Biel,


justamente, como habia leido aqui que RF decía que conviene usar oRs:update() en vez del comando INSERT (o de repente yo lo entendí mal), es que quería saber como hacerlo con el recordset (:update() en vez que con :Execute()


gracias de tu tiempo.
Pedro Gonzalez
User avatar
wmormar
Posts: 1050
Joined: Fri Oct 07, 2005 10:41 pm
Location: México
Contact:

Post by wmormar »

Fernando Sanchez wrote:Hola Pedro,

En el mensaje referente a ADORDD un usuario posteo un link con todo lo necesario para hacer funcionar en xHarbour. Recuerda compilar el codigo fuente de ADORDD con tu version de xHarbour.

http://rapidshare.com/files/29234022/adoRDD.rar.html
Fer,

compila tanto en xharbour como harbour.

por cierto, sería conveniente incluir las modificaciones en el cvs de harbour.

saludos
William, Morales
Saludos

méxico.sureste
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

William,

Vamos a subir las modificaciones al CVS de Harbour, lo que ocurre es que queremos hacer _ en el código para eliminar diferencias entre Harbour y xHarbour y que a ser posible, se use el mismo código con ambos
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
wmormar
Posts: 1050
Joined: Fri Oct 07, 2005 10:41 pm
Location: México
Contact:

Post by wmormar »

Antonio Linares wrote:William,

Vamos a subir las modificaciones al CVS de Harbour, lo que ocurre es que queremos hacer _ en el código para eliminar diferencias entre Harbour y xHarbour y que a ser posible, se use el mismo código con ambos
ok. gracias
William, Morales
Saludos

méxico.sureste
Post Reply